PHP GET或POST安全性

时间:2013-05-13 07:46:11

标签: php security post get

早上好。 我今天晚些时候正在参加网络开发考试。对于大多数考试都非常有信心,但是在查看过去的论文时,我遇到了这个问题:

b)开发人员决定使用HTTP GET发送留言板系统的用户消息。解释潜在的安全威胁并讨论如何克服它们。请注意,您应该考虑两种情况:

  1. 必须使用HTTP GET。
  2. 可以更改HTTP GET。 (15分)
  3. 我知道POSTGET,但我不确定我是否能够详细讨论它以达到15分。

    这是我尝试回答这个问题的尝试,如果可以提出建议,试图指引我走向正确的方向,那将非常感激:

      

    GET有点不安全,如果消息是私人消息,则数据可能是敏感的,因此除非包含添加的安全性,否则不应使用GET。   GET将在URL中显示用户消息,允许任何人查看,查看您的肩膀等。   邮件本质上稍微更安全,它不会在URL中显示消息,而是将其添加到HTTP标头,但是只有在HTTP协议安全并且应考虑对所有敏感数据进行加密时,这才是安全的。

    如果有人可以提出可以回答这个问题的建议,那将非常感激!

    由于

1 个答案:

答案 0 :(得分:2)

当你谈论安全性时,有几个层次。使用GET或POST很可能不是现实或死亡类型的选择,但它绝对有用,可以区分两者。

顾名思义,GET用于检索信息,POST用于发送信息。如果你牢记这一点,那么知道使用什么方法并不难。

在您的情况下,用户正在将新消息发布到留言板。所以POST将是正确的答案。 POST对此更安全的原因是它始终需要来自用户或javascript的特定操作。我不能通过电子邮件向您发送链接,并直接让您发布新消息。 如果我使用GET,我可以向您发送http://www.example.com/postmessage.php?message=post%20me之类的链接,如果您点击它,则会发布。

现在,如果您的留言板受到用户名密码保护,并且您已登录,我已使用GET请求发布了您的行为,并且没有人会知道它不是真的。这是一个潜在的安全风险。

现在,如果我发送带有链接的邮件,您仍需要点击它。但请考虑我可以在同一个消息论坛上发布图像。我可以像<img src='/postmessage.php?message=post%20me' width='0' height='0'/>一样发布自己的图片,每个访问我帖子的用户也会发布该消息,因为您/他们的浏览器会尝试GET图片,我会再次代表您发布。< / p>

现在,如果我可以发布javascript,我显然也可以发出POST请求。但是发布javascript并不常见。

GET请求的另一个副作用是searchengines也会抓住这个并且可能会创建消息。

最后:获取请求有限。如果你想发布一条大邮件,你需要发帖。有关查询字符串长度的大量详细信息,请参阅What is the maximum possible length of a query string?。您可以使用GET快速达到最大值。

现在所有这些安全问题都无法通过使用POST而不是GET来解决,并且需要在服务器端代码上花费更多精力。但第一步是使用正确的方法。