0

这是一个相当简单的问题,但我无法用谷歌搜索答案并进行了搜索。

在我之前的一个问题中,我问如何在 $_GET 值是动态的时保护自己免受注射,例如在浏览帖子并且您有 index.php?post=11 并且您需要猜测帖子 ID 时。

现在我不得不问如果 $_GET 值是静态的并且总是相同的安全类型是什么

我有一个像这样的索引页面 index.php?go=upcoming 和 go=upcoming 总是一样的。因此,与其猜测这里我有静态值,而且我有一个代码来检查它,看看是否即将发布的值来显示其余的代码。

我在这里添加了一个完整的代码,它对查询其余代码(如我没有添加的 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 注入?

4

3 回答 3

0

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

至于在任何数据操作中涉及的数据,无论是存储、交换还是输出——它必须不经过清理而是格式化——根据目标介质的规则。比如说,html 格式对于 SQL 或 JSON 等完全没用。

于 2013-10-25T09:15:02.413 回答
0

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

于 2013-10-25T09:15:41.307 回答
-1

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

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

$var = htmlspecialchars(filter_var($_GET['i']));
于 2013-10-25T09:07:48.527 回答