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
这样
请各位指点一下 谢谢
现在 我想以上的photo.php 文件被访问的时候, 程序检查是否合符规格,‘type=’ 和‘id=’ 后面只能跟数字。在id后面不能有其他的参数,比如:
http://localhost/photo.php?type=1&id=0&1=1
这样
请各位指点一下 谢谢
$id = intval($_GET['id']);再对type和id做操作,即便type或者id做了恶心的type=1%3d2&id=0%3b之类的,也就没有安全性问题了。
当然前提是涉及到数据库的操作时.如果你这个参数都没有参与数据库的相关操作那么可以不需要这么紧张啦.
if(!(preg_match("/^\d*$/",$_GET[type])) || $_GET[type] < 0 || $_GET[type] == null) {
header('Location: ./XXXX');
exit();
}
if(!(preg_match("/^\d*$/",$_GET[page])) || $_GET[id] < 0 || $_GET[id] == null) {
header('Location: ./xxxx');
exit();
}我现在这样咯
不要被那些黑客教程吓着,没有被程序使用的输入,不会对安全有任何危害至于用intval, (int) 还是is_numeric 或是正则,完全取决于你的需求,注意这些方法在特殊输入时有可能产生不同效果,
比如在输入小数时?负数时?十六进制,八进制数时?以数字开头却包含字母时?
结果是有可能不同,然后可能导致程序走向不同的分支.最好的方法就是多测试.