日期:2014-05-17  浏览次数:20518 次

判断是否合符规格的url
http://localhost/photo.php?type=1&id=0

最近看一下黑客教程 说什么 在 这些URL 后面 加入 一些 1=1 这些条件可以实现什么SQL 注入问题
现在 我想以上的photo.php 文件被访问的时候, 程序检查是否合符规格,‘type=’ 和‘id=’ 后面只能跟数字。在id后面不能有其他的参数,比如: 
http://localhost/photo.php?type=1&id=0&1=1 
这样


请各位指点一下 谢谢

------解决方案--------------------
使用intval 或者正则对提交的内容根据最终目的类型进行过滤。判断提交内容的长度...
当然前提是涉及到数据库的操作时.如果你这个参数都没有参与数据库的相关操作那么可以不需要这么紧张啦.
------解决方案--------------------
对数据进行转义是必要的手段。不光是对数据的有效性的判断
------解决方案--------------------
哪用得着正则啊。is_numeric()就能判断是否为数字。
------解决方案--------------------
若是整型的直接强制转换(int)$var;这样不是更省事!至于字符窜类型的,得用过滤之类的手段了
------解决方案--------------------
对输入数据做检查和过滤,基本是程序第一步要做的事情...其实楼主你一定已经做过很多了...
不要被那些黑客教程吓着,没有被程序使用的输入,不会对安全有任何危害

至于用intval, (int) 还是is_numeric 或是正则,完全取决于你的需求,

注意这些方法在特殊输入时有可能产生不同效果,
比如在输入小数时?负数时?十六进制,八进制数时?以数字开头却包含字母时?
结果是有可能不同,然后可能导致程序走向不同的分支.

最好的方法就是多测试.