-5

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

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

  1. 必须使用 HTTP GET。
  2. HTTP GET 可以更改。(15 分)

我知道POSTand GET,但我不确定我是否能够足够详细地讨论它以获得 15 分。

这是我回答问题的尝试,如果可以提出建议以试图将我引向正确的方向,将不胜感激:

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

如果有人可以建议可以写什么来回答这个问题,将不胜感激!

谢谢

4

1 回答 1

2

当您谈论安全性时,有几个级别。使用 GET 或 POST 很可能不是一个活的或死的选择,但它肯定有助于区分两者。

顾名思义,GETment是检索信息,POST是用来发送信息的。如果你牢记这一点,就不难知道使用什么方法。

在您的情况下,用户正在向留言板发布新消息。POST正确的答案也是如此。a 更安全的原因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该图像并且我再次代表您发布。

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

请求的另一个副作用GET是搜索引擎也会对此进行搜索,并可能会创建消息。

最后:获取请求是有限的。如果您想发布大消息,则需要发布。请参阅查询字符串的最大可能长度是多少?有关查询字符串长度的许多详细信息。使用 可以快速达到最大值GET

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

于 2013-05-13T08:25:19.873 回答