好的,我觉得我不会前进,甚至连一个简单的if声明都不安全,我自己也不知道......
首先让我们说我们从url GET方法中得到一个变量:
$my_number = $_GET['numb'];
现在我们制作这个简单的if语句:
if(($my_number >= 1) && ($my_number <= 12))
{
put $my_number in database without escaping it
}
所以问题是 - 如果条件除了1-12之外的其他条件,用户是否可以传递此信息,我的意思是使用十六进制数字,评论,做那种事情?
答案 0 :(得分:1)
要验证号码,请使用intval()
$my_number = intval($_GET['numb']);
只允许一个数字 这也将确保该值不会在SQL中产生错误。
我不喜欢>=
或<=
if(($my_number >= 1) && ($my_number <= 12))
更改为:
if(($my_number > 0) && ($my_number < 13))
答案 1 :(得分:-2)
您的代码不完全安全。如果条件与1-12之外的其他内容,用户可以传递此信息。 您可以使用以下简单代码对其进行测试:
<?php
$my_number = $_GET['numb'];
if(is_numeric($my_number)){
if(($my_number >= 1) && ($my_number <= 12))
{
echo'User Can Pass';
}else{
echo'User Can Not Pass';
}
}else{
echo'User Can Not Pass';
}
?>
现在浏览您的网站,例如http://example.com/?numb=8
或http://example.com/?numb=15
或http://example.com/?numb=7 Samurai
我想你现在可以找到答案了。感谢。