2013-05-13 72 views
-5

早上好。 今天晚些时候我将参加Web开发考试。对大部分考试都很有信心,但是看过去的论文,我发现了这个问题:PHP GET或POST安全

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

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

我知道POSTGET,但我不知道我将能够讨论它足够的细节来实现15马克。

这就是我的回答这个问题,如果建议可以在试图引导我在正确的方向上做出了尝试,这将不胜感激:

GET有些不安全,如果消息是私人消息,数据很可能是敏感的,因此除非增加安全性,否则不应使用GET。 GET将在URL中显示用户信息允许任何人查看此,寻找你的肩膀等 发表性质稍微更安全,它不会在网址中显示的消息,而是将其添加到HTTP标头,但是如果HTTP协议是安全的并且应该考虑所有敏感数据的加密,这只是安全的。

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

谢谢

+7

让我们看看你的尝试...毕竟,那些考试是... – 2013-05-13 07:47:42

+4

@Sean_myers这将是很好的阅读你的答案,然后评论它。 – 2013-05-13 07:48:50

+0

阅读我的答案,它解释了你要求的内容,并记住POST/GET的安全性没有太大区别。这与您想要发送(POST)或检索(GET)数据的内容相当重要。 – Robert 2013-05-13 08:03:31

回答

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图片,并且我再次以您的名义发布。

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

GET请求的另一个副作用是,搜索引擎也会这样做,并且可能会创建消息。

最后:获取请求是有限的。如果您想发布大量信息,则需要发布信息。有关查询字符串长度的详细信息,请参见What is the maximum possible length of a query string?。您将通过GET快速达到最大值。

现在所有这些安全问题都不能通过使用POST而不是GET来解决,并且需要在服务器端代码上做更多的工作。但第一步是使用适当的方法。

+0

谢谢,它会出现我没有真正教过这些。我想我现在可能需要做一些阅读,然后... – 2013-05-13 08:34:03

+0

请解释什么是错误的答案downvoter。我想提高自己。 – 2013-05-13 08:35:34

+1

@HugoDelsing +1为好的答案,并希望它补偿downvoter – 2013-05-13 08:47:14