这是一个相当简单的问题,但我不能谷歌答案,我搜索。
在我之前提出的一个问题中,我问的是,当$ _GET值是动态的时候,我怎么能保证我的自我反对注射,比如在浏览帖子时你有index.php?post = 11并且你需要猜测帖子ID。
现在我必须问一下,如果$ _GET值是静态的并且始终是相同的,那么安全类型是什么
我有一个索引页面就像这个index.php?go = coming和go = coming总是一样的。所以不要在这里猜测我有静态值,我有一个代码检查它,看看是否即将发布的值显示其余的代码。
if(isset($_GET['go']) && $_GET['go'] == 'upcoming' ){
mysqli_query($conn, " SELECT * FROM deals WHERE upcoming=1");
}
else {
mysqli_query($conn, "SELECT * FROM deals WHERE active=1");
}
我是否需要担心这个和/或其他黑客和安全问题的SQL注入?
答案 0 :(得分:0)
如果此变量只是程序逻辑中使用的标志,但在数据操作中没有使用(即仅在if
语句中使用) - 当然,不需要清理。
对于任何数据操作所涉及的数据,无论是存储还是交换或输出 - 根据目标介质的规则,它必须不清理,但格式化。比方说,对于SQL或JSON等,html格式化完全没用。
答案 1 :(得分:0)
由于您没有将用户输入插入SQL语句,因此您不必担心SQL注入。
答案 2 :(得分:-1)
是的,你需要。永远不要相信来自用户的任何东西。没有人可以在这里进行SQL注入,因为没有SQL,但也许他可以做其他你还没看到的东西。
总是验证用户输入,这并不困难,但可以保存您的软件并节省大量时间。最简单的方法是:
$var = htmlspecialchars(filter_var($_GET['i']));