如何解决为什么不应该使用 GET 请求? 3个选项
我们在大学里涵盖了所有这些 POST 和 GET 请求主题,但这三个主题仍然在我的脑海中。 我想知道,因为我不太确定为什么我不应该对这三个示例使用 GET 请求。我只是希望有人能更好地解释所有这些选项。
1.
sql = 'SELECT * FROM contacts WHERE id ?' .$_GET['id'];
是不是因为如果没有 id 那么我将无法获得它并且 PHP 会向我显示一条错误消息。
2.
eval($_GET['user_provided_code'];
是不是因为输入他/她的代码的人基本上可以插入他/她想要的任何内容,并且可以接管我的计算机或删除某些内容。
3.
function toFarenheit($temp){
return ($temp * 9 /5 + 32) * $_GET['const'];
}
对于第二个选项的基本想法,我们不能通过 GET 请求插入数据,在这种情况下,人们可以插入他/她喜欢的任何内容。
解决方法
在安全方面,GET 和 POST 之间没有任何区别。通常,GET 用于幂等操作(例如从数据库中选择行并显示它们),当请求创建更改(例如更新行)时使用 POST。这些示例中的问题不是它们使用 GET,而是他们不会验证不受信任的用户输入。
-
从 GET 请求中获取的值构建 SQL 查询本身并没有什么错误。这个特定示例的问题(不包括语法错误)仅在于它假定变量存在并且包含有效值。
-
eval()
实际上从不需要,而且几乎总是会带来安全问题。在这个例子中,你只是盲目地执行用户给你的任何东西,这是一个糟糕的主意。 -
$_GET['const']
可能不存在。如果确实存在,则它可能不包含数字。没有真正的安全问题,最坏的情况是它会评估为零并返回一个糟糕的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。