使用PHP isnumeric函数保护get变量免受SQL注入



我有一个PHP脚本,根据GET变量中id的值将从mysql数据库检索不同的数据。id的值在任何时候都应该是数字。而不是改变我当前的mysql查询使用PDO,将运行isnumeric上的Get变量和退出脚本,如果它不是一个数字是足以防止注入在所有或大多数情况下,即,它仍然是可能的一些注入sql滑过isnumeric?

只是对重复问题的一个谦虚的评论,我看了建议的重复问题,并认为作为一个初学者,它可能不清楚它的表面,我的问题是一个完全重复的。

是的,它会保护在这种情况下。不,这将是一个非常非常糟糕的主意,除非你完全知道你在做什么,并在注释中正确地记录你的选择。

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

  1. 否认。选择懒惰的方法来解决当前的问题,而不是从根本上解决问题。现在等着有一天你忘记了这是你的"安全",你改变了代码,它突然变得脆弱,儿童色情被上传到你的网站。
  2. 的专业性。彻底解决问题,验证输入,通过转义或使用准备好的语句来正确保护您的数据库层。

选择专业,一年后感谢我。

似乎这个问题已经有了答案。是的,isNumeric技巧本质上只允许经过处理的输入,从而保护应用程序不受SQL注入的影响。

最新更新