早上好。 我今天晚些时候正在参加网络开发考试。对于大多数考试都非常有信心,但是在查看过去的论文时,我遇到了这个问题:
b)开发人员决定使用HTTP GET
发送留言板系统的用户消息。解释潜在的安全威胁并讨论如何克服它们。请注意,您应该考虑两种情况:
我知道POST
和GET
,但我不确定我是否能够详细讨论它以达到15分。
这是我尝试回答这个问题的尝试,如果可以提出建议,试图指引我走向正确的方向,那将非常感激:
GET有点不安全,如果消息是私人消息,则数据可能是敏感的,因此除非包含添加的安全性,否则不应使用GET。 GET将在URL中显示用户消息,允许任何人查看,查看您的肩膀等。 邮件本质上稍微更安全,它不会在URL中显示消息,而是将其添加到HTTP标头,但是只有在HTTP协议安全并且应考虑对所有敏感数据进行加密时,这才是安全的。
如果有人可以提出可以回答这个问题的建议,那将非常感激!
由于
答案 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
来解决,并且需要在服务器端代码上花费更多精力。但第一步是使用正确的方法。