为什么你不应该使用 GET 请求? 3个选项

Why you shouldn't be using GET request? 3 options

我们在大学时涵盖了所有这些 POST 和 GET 请求主题,但这三个主题仍然在我的脑海中。 我想知道,因为我不太确定为什么我不应该对这三个示例使用 GET 请求。我只是希望有人能更好地解释所有这些选项。

1.

sql = 'SELECT * FROM contacts WHERE id ?' .$_GET['id'];

是不是因为没有id我就获取不到,PHP显示错误信息

2.

eval($_GET['user_provided_code'];

是不是因为输入his/her代码的人基本上可以he/she随便插入什么,就可以接管我的电脑或删除什么。

3.

function toFarenheit($temp){
return ($temp * 9 /5 + 32) * $_GET['const'];
}

关于第二个选项的基本思路,我们不能使用 GET 请求插入数据,在这种情况下,人们可以插入 he/she 喜欢的任何内容。

安全方面,GET 和 POST 之间并没有什么区别。通常,GET 用于幂等操作(如从数据库中选择行并显示它们),而 POST 在请求创建更改时使用(如更新行)。这些示例中的问题不在于它们使用GET,就是他们不验证不受信任的用户输入。

  1. 根据从 GET 请求获得的值构建 SQL 查询本质上没有错。这个特定示例的问题(除了语法错误)只是它假定变量存在并包含有效值。

  2. eval() 实际上从来不需要,而且几乎总是会引入安全问题。在这个例子中,你只是盲目地执行用户给你的任何东西,这是一个糟糕的主意。

  3. $_GET['const'] 可能不存在。如果它确实存在,它可能不包含数字。没有真正的安全问题,最坏的情况是它会评估为零并且 return 一个糟糕的结果。