所以我想知道这是否足够安全,用户不会进行任何SQL注入,并且数字将只是并且始终是整数? getArticle函数中的$ id绑定到SQL查询。
<?php $id = (isset($_GET['id']) && is_int((int)$_GET['id'])) ? (int)$_GET['id'] : false ?>
<?php $news = $class->getArticle($id) ?>
到目前为止,我测试它工作正常,但因为我不完全确定我宁愿问你guyz! 好吧,人们说准备好的陈述可以解决问题。他们真的会吗?就像,我可以完全确定如果将参数绑定为整数,那么它将是整数吗?
提前致谢!
答案 0 :(得分:10)
您只需输入正确的类型:
$number = intval($_GET['id']);
$string = mysql_real_escape_string(strval($_GET['str']));
确保你得到你期望的东西。
更好的解决方案是使用Prepared statements来避免sql注入。
答案 1 :(得分:5)
使用准备好的陈述。没有理由不使用它们。那么你不必问“这还不错吗?”
答案 2 :(得分:0)
我无法想到如何将它用于SQL注入。所以我会说它足够安全。
答案 3 :(得分:0)
只需使用:
$id=(int)@$_GET['id'];
如果未设置$ _GET ['id'],则$ id将为0.
如果你想测试id是否正确设置,请使用:
if ($id=(int)@$_GET['id']){
//
} else {
//invalid id
}