我有一个PHP脚本,取决于在GET变量中的ID值从MySQL数据库中检索不同的数据。 id的值应始终为数字。不是将当前的mysql查询改为使用PDO,而是在Get变量上运行isnumeric,如果它不是一个数字就会退出脚本,足以在所有或大多数情况下防止注入,也就是说,它是否仍可能进行某些注入sql滑过isnumeric?保护从SQL注入获取变量与PHP数字函数
对重复问题只是一个简单的评论,我看着建议的重复问题,并认为作为一个初学者,它的脸上可能并不清楚我的问题是一个完全重复的问题。
我有一个PHP脚本,取决于在GET变量中的ID值从MySQL数据库中检索不同的数据。 id的值应始终为数字。不是将当前的mysql查询改为使用PDO,而是在Get变量上运行isnumeric,如果它不是一个数字就会退出脚本,足以在所有或大多数情况下防止注入,也就是说,它是否仍可能进行某些注入sql滑过isnumeric?保护从SQL注入获取变量与PHP数字函数
对重复问题只是一个简单的评论,我看着建议的重复问题,并认为作为一个初学者,它的脸上可能并不清楚我的问题是一个完全重复的问题。
是的,它会保护在这种情况下。不,如果你完全不知道自己在做什么,并且在评论中正确记录选择,这将是一个非常糟糕的主意。
有2种任何类型的安全策略:
选择专业,并感谢我从现在开始一年。
感谢您的所有意见和解答。我要继续并使用绑定参数。我现在要选择尼尔斯的回答,因为他说服我不按照我的方式去做。 – Cbomb 2013-05-06 23:55:30
这是小孩色情添加,做对了吗? ;)但正如我所说的,在大多数情况下都要尽量做到这两点。首先使用'isnumeric'验证输入,这样你就可以抛出一个干净的错误,然后使用预处理语句保护数据库,或者在处理不可信输入时总是应该执行转义操作。 – 2013-05-06 23:57:14
看起来像这样question has already been answered。是的,isNumeric技巧本质上只允许清理输入,因此屏蔽了SQL注入的应用程序。
使用'mysqli'准备语句 – peterm 2013-05-06 23:33:17
使用'(int)'或类型为'is_numeric()'的类型转换就足够了。无论如何,绑定参数只是更简单。 – mario 2013-05-06 23:36:35