检查$ _GET时$ _GET是否只能是固定值时,是否需要额外的安全性?

时间:2013-10-25 08:58:17

标签: php security mysqli get sql-injection

这是一个相当简单的问题,但我不能谷歌答案,我搜索。

在我之前提出的一个问题中,我问的是,当$ _GET值是动态的时候,我怎么能保证我的自我反对注射,比如在浏览帖子时你有index.php?post = 11并且你需要猜测帖子ID。

现在我必须问一下,如果$ _GET值是静态的并且始终是相同的,那么安全类型是什么

我有一个索引页面就像这个index.php?go = coming和go = coming总是一样的。所以不要在这里猜测我有静态值,我有一个代码检查它,看看是否即将发布的值显示其余的代码。

我在这里添加了一个完整的代码,查询其余代码的功能如html格式我没有添加。太长了。

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注入?

3 个答案:

答案 0 :(得分:0)

如果此变量只是程序逻辑中使用的标志,但在数据操作中没有使用(即仅在if语句中使用) - 当然,不需要清理。

对于任何数据操作所涉及的数据,无论是存储还是交换或输出 - 根据目标介质的规则,它必须不清理,但格式化。比方说,对于SQL或JSON等,html格式化完全没用。

答案 1 :(得分:0)

由于您没有将用户输入插入SQL语句,因此您不必担心SQL注入。

答案 2 :(得分:-1)

是的,你需要。永远不要相信来自用户的任何东西。没有人可以在这里进行SQL注入,因为没有SQL,但也许他可以做其他你还没看到的东西。

总是验证用户输入,这并不困难,但可以保存您的软件并节省大量时间。最简单的方法是:

$var = htmlspecialchars(filter_var($_GET['i']));