Php 为什么你不应该';您不能使用GET请求吗?3个选项

Php 为什么你不应该';您不能使用GET请求吗?3个选项,php,get,Php,Get,我们在大学里讨论了所有这些帖子和获取请求的话题,但这三个话题仍然在我的脑海中。 我想知道,因为我不太清楚为什么不应该对这三个示例使用GET请求。我只是希望有人能在这方面做得更好,为所有这些选择多解释一点 一, 是因为如果没有id,我就无法获取它,PHP会向我显示一条错误消息 二, 是因为输入代码的人基本上可以插入他/她想要的任何内容,并且可以接管我的计算机或删除某些内容 三, 对于第二个选项,我们不能使用GET请求插入数据,在这种情况下,用户可以插入他/她喜欢的任何内容。从安全角度看,GET和P

我们在大学里讨论了所有这些帖子和获取请求的话题,但这三个话题仍然在我的脑海中。 我想知道,因为我不太清楚为什么不应该对这三个示例使用GET请求。我只是希望有人能在这方面做得更好,为所有这些选择多解释一点

一,

是因为如果没有id,我就无法获取它,PHP会向我显示一条错误消息

二,

是因为输入代码的人基本上可以插入他/她想要的任何内容,并且可以接管我的计算机或删除某些内容

三,


对于第二个选项,我们不能使用GET请求插入数据,在这种情况下,用户可以插入他/她喜欢的任何内容。

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

  • 从GET请求获得的值构建SQL查询本身并没有什么问题。这个特定示例(语法错误除外)的问题只是它假定变量存在并且包含有效值

  • eval()。在这个例子中,你只是盲目地执行用户给你的任何东西,这是一个糟糕的想法

  • $\u GET['const']
    可能不存在。如果它确实存在,则可能不包含数字。这并没有真正的安全问题,最坏的情况是它将计算为零并返回一个糟糕的结果


  • 一句话:安全性GET和POST在安全性方面没有什么区别,只是对于刚接触GET方法的黑客来说,进入的障碍要小一些。所有用户输入都应该被认为是一种安全风险,并在能够与应用程序交互之前进行适当过滤。包括cookies!经常被忽略…我会给它一个+1,但我会小心地告诉新手,从任何用户输入构建SQL查询都可以,而不必限定正确的方法来确保应用程序不受SQL注入的影响(即:参数化SQL)。但你是对的,人们经常忽视的一点是,从安全角度来看,GET和POST之间没有区别。知道自己在做什么的人可以很容易地模拟任何一种方法。
    sql = 'SELECT * FROM contacts WHERE id ?' .$_GET['id'];
    
    eval($_GET['user_provided_code'];
    
    function toFarenheit($temp){
    return ($temp * 9 /5 + 32) * $_GET['const'];
    }