2013-05-06 55 views
0

我有一个PHP脚本,取决于在GET变量中的ID值从MySQL数据库中检索不同的数据。 id的值应始终为数字。不是将当前的mysql查询改为使用PDO,而是在Get变量上运行isnumeric,如果它不是一个数字就会退出脚本,足以在所有或大多数情况下防止注入,也就是说,它是否仍可能进行某些注入sql滑过isnumeric?保护从SQL注入获取变量与PHP数字函数

对重复问题只是一个简单的评论,我看着建议的重复问题,并认为作为一个初学者,它的脸上可能并不清楚我的问题是一个完全重复的问题。

+0

使用'mysqli'准备语句 – peterm 2013-05-06 23:33:17

+0

使用'(int)'或类型为'is_numeric()'的类型转换就足够了。无论如何,绑定参数只是更简单。 – mario 2013-05-06 23:36:35

回答

1

是的,它会保护在这种情况下。不,如果你完全不知道自己在做什么,并且在评论中正确记录选择,这将是一个非常糟糕的主意。

有2种任何类型的安全策略:

  1. 拒绝。选择适合当前情况的懒惰方法,而不是从根本上解决问题。现在等待你忘了这是你的'安全'的那一天,你改变了代码,它突然变得脆弱,小孩色情上传到你的网站。
  2. 专业。彻底解决问题,验证输入通过转义或使用预准备语句来保护您的数据库层。

选择专业,并感谢我从现在开始一年。

+0

感谢您的所有意见和解答。我要继续并使用绑定参数。我现在要选择尼尔斯的回答,因为他说服我不按照我的方式去做。 – Cbomb 2013-05-06 23:55:30

+0

这是小孩色情添加,做对了吗? ;)但正如我所说的,在大多数情况下都要尽量做到这两点。首先使用'isnumeric'验证输入,这样你就可以抛出一个干净的错误,然后使用预处理语句保护数据库,或者在处理不可信输入时总是应该执行转义操作。 – 2013-05-06 23:57:14