【问题标题】:Do I still Need To Use Prepared Statement [duplicate]我还需要使用准备好的语句吗[重复]
【发布时间】:2014-09-07 16:26:13
【问题描述】:

使用 PHP 和 MySQLi 我有一个带有 4 个 HTML 5 下拉选择列表输入的简单表单。现在想知道我是否还必须使用 Prepared Statement 来保护我的数据库?我是否仍然面临 SQL 注入问题的风险?或者使用这种类型的输入是否存在任何其他类型的风险。谢谢

【问题讨论】:

  • 我真的不明白这个问题是如何得到这么多赞成的,尽管Google search 的两个第一个结果已经回答了这个问题,而且答案很简单,归结为:@987654322 @.
  • 右键单击 Chrome 中的选择框,然后单击“检查元素”。然后随意将值更改为您喜欢的任何值并提交表单。

标签: php mysqli prepared-statement


【解决方案1】:

您仍然很容易受到注入攻击,因为通过您的选择框插入的值很容易被最终用户修改。

如果你有一个好的验证服务器端,那么不用准备好的语句就可以了。

好的,我的意思是这样的:

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

直接插入用户输入绝不是一个好主意。你永远不应该相信最终用户!

【讨论】:

  • 感谢 Philip 编辑和回复问题。老实说,对文本或电子邮件等输入进行 SQL 注入对我来说很有意义,但我无法理解复选框、收音机和选择框等输入是如何被黑客入侵的!
  • 对于想要伤害您网站的人:通过选择框修改值几乎就像通过文本输入字段输入一样简单。
  • 当然可以,但我还要再等 3 分钟!接受答案
  • @Suffii - 用户可以轻松修改表单(尝试 Firebug 或 Chrome 开发者控制台)...或者他们可以在单独的站点上创建表单并发布到您的服务器。有很多方法可以做到:“永远不要相信用户”是个好建议。
  • 很高兴知道谢谢 Ben!
猜你喜欢
  • 2012-03-20
  • 2018-09-26
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2019-07-03
  • 2018-12-14
相关资源
最近更新 更多