Php 针对SQL注入的建议
我正在处理一个现有的网页,并使用jQuery修改DOM 在我的脚本中,POST-Ajax调用向php文件发送参数Php 针对SQL注入的建议,php,jquery,mysql,sql,ajax,Php,Jquery,Mysql,Sql,Ajax,我正在处理一个现有的网页,并使用jQuery修改DOM 在我的脚本中,POST-Ajax调用向php文件发送参数registration\u id,该参数仅由数字组成(例如310)。 此参数在SQL请求中传递,该请求返回3个元素(id,context\u id,trackingstable中花费的时间) 因此,我在php代码中实现了一些安全性: 我检查是否设置了POST参数 我检查长度是否小于5 我检查参数是否仅由ctype_digit()的数字组成 第四种安全性:对数据库的访问是严格的:我创
registration\u id
,该参数仅由数字组成(例如310)。
此参数在SQL请求中传递,该请求返回3个元素(id
,context\u id
,trackings
table中花费的时间)
因此,我在php代码中实现了一些安全性:
- 我检查是否设置了POST参数
- 我检查长度是否小于5
- 我检查参数是否仅由ctype_digit()的数字组成
- 第四种安全性:对数据库的访问是严格的:我创建了一个用户,它只能在
表中选择字段跟踪
,id
,context\u id
花费的时间
托马斯你不知道你不知道的东西。看起来您对安全性考虑得已经够多了,但是如果有人知道一个仍然会输出比您想要的更多的技巧,该怎么办?不要试图实现自己的安全系统 准备好的声明被证明是安全的。如果你想确保自己的安全,就用这个。您可以保留这些检查,它们仍然可以用于提供用户反馈
另一方面,我想不出只有小于10000的数字才能进行任何注入。使用准备好的语句可以确保sql不能被注入。你可以检查很多东西,但是你可能会忘记或监督一些事情。另外,请添加以下内容:(检查@Veda下面更新、更好、更安全的mysqli函数)。@Cagy79如果有一个不推荐使用,那么使用这个函数也可以避免使用
\u real\u escape\u string
,而使用参数化查询(根据问题的前两条注释)