当前位置: 首页 > 知识库问答 >
问题:

我还需要使用准备好的语句吗[副本]

上官鸿祯
2023-03-14

使用PHP和MySQLi,我有一个简单的表单,其中包含4个HTML 5下拉列表输入。现在想知道我是否仍然必须使用Prepared语句来保护我的数据库?我是否仍有SQL注入问题的风险?或者使用此类输入是否存在任何其他类型的风险。谢谢

共有1个答案

禄光霁
2023-03-14

由于最终用户可以很容易地修改通过选择框插入的值,因此您仍然很容易受到注入攻击。

如果您有一个好的验证服务器端,那么在没有准备好的语句的情况下进行验证就可以了。

我的意思是这样的:

$array = Array("all", "your", "possible", "values", "from", "Select boxes");
if(in_array ($_POST['selectbox'], $array)){
      //Mysql statements etc....
}

直接插入用户输入从来都不是一个好主意。您永远不应该信任最终用户!

 类似资料:
  • 问题内容: 对于此查询,有必要使用吗? 任何改进或查询是否还好? 在这种情况下,查询速度很重要。 问题答案: 否,准备好的查询(正确使用时)将确保对数据进行正确的转义以进行安全查询。您有点正确地使用它们,只需要更改一件事。因为您使用的是“?” 占位符,最好通过execute方法传递参数。 请注意,如果要将其输出到页面,数据库清理并不意味着可以在HTML中安全显示,因此也可以在其上运行htmlspe

  • 问题内容: 在PDO :: Prepare页上指出: “并且通过消除对参数的手动引用来帮助防止SQL注入攻击” 知道这一点,是否有一个像mysql_real_escape_string()这样的PHP函数可以照顾到PDO的转义?还是PDO会为我做好一切转义? 编辑 我现在意识到我问了一个错误的问题。我的问题确实是,“ PDO会为我做什么?” 我现在通过这些答案意识到,它实际上仅消除了对引号进行转义

  • 问题内容: 我已经阅读了很多有关准备好的语句的信息,并且在阅读的所有内容中,没有人谈论使用它们的弊端。因此,我想知道是否有人们容易忽视的“有龙”斑点? 问题答案: Prepared语句只是一个经过解析和预编译的语句,它仅等待提供绑定变量的执行。 任何执行的语句迟早都会准备(需要解析,优化,编译然后执行)。 一条准备好的语句只是重用了解析,优化和编译的结果。 通常,即使您自己不使用准备好的查询,数据

  • 我正在使用golang和Postgresql。 这里说,对于不返回行(插入、删除、更新)的操作,我们应该使用 如果函数名包括Query,则它被设计为询问数据库的问题,并将返回一组行,即使它是空的。不返回行的语句不应使用查询函数;它们应该使用Exec()。 然后它在这里说: Go在封面下为您创建准备好的语句。一个简单的db。例如,查询(sql、参数1、参数2)的工作原理是准备sql,然后用参数执行它

  • 我有一个将列名映射到值的。要更新的列事先未知,在运行时决定。 例如< code>map = {col1: "value1 ",col2: "value2"}。 我想执行一个< code>UPDATE查询,用这些列将表更新为相应的值。我能做以下事情吗?如果没有,有没有一种优雅的方法可以不用手动构建查询?