在执行flash-based uploader时,我们遇到了一个问题:Flash doesn't provide the correct cookies。 我们需要我们的PHP会话ID通过POST变量传递。POST是否像Cookie一样安全?
我们想出了并实现了一个功能性解决方案,检查POST PHPSESSID。
是否将发布会话ID安全地发送到cookie中?
可能的原因:因为两者都在http标头中,并且同样可能让客户伪造。 可能的原因是:因为伪造POST变量比Cookie更容易。
在执行flash-based uploader时,我们遇到了一个问题:Flash doesn't provide the correct cookies。 我们需要我们的PHP会话ID通过POST变量传递。POST是否像Cookie一样安全?
我们想出了并实现了一个功能性解决方案,检查POST PHPSESSID。
是否将发布会话ID安全地发送到cookie中?
可能的原因:因为两者都在http标头中,并且同样可能让客户伪造。 可能的原因是:因为伪造POST变量比Cookie更容易。
它是安全的 - 锻造POST与cookie一样简单。这些都是通过简单地在cURL中设置标志来完成的。
这就是说,我认为你也有一个很好的解决方案。
如果您能够从活动内容获取会话ID以便进行发布,这大概意味着您的会话Cookie不标记为HttpOnly,我们的主持人声明其中一个是a good idea for defending against cross-site scripting attacks。
请考虑使用基于JavaScript的甚至基于刷新的上传器监视器,该监视器应该与Cookie可以为HttpOnly的其他所有内容充分结合。另一方面,如果您的网站不接受第三方内容,则跨网站脚本攻击可能不会受到任何关注;如果您的网站不接受第三方内容,在这种情况下,POST很好。
我认为通过GET发送它也可以正常工作,因为你在HTTP请求中使用了任何东西(使用卷曲或甚至是闪烁)。 重要的是你在cookie/post/get参数中加密了什么,以及它如何在服务器端加密和检查。
POST数据不是一个HTTP头,而是作为TCP流的一部分发送的,这使得它与HTTP头一样易于读取/伪造。如果拦截HTTP请求会是这个样子:
POST /path/to/script HTTP/1.1
Host: yourdomain.com
User-Agent: Mozilla/99.9 (blahblahblah)
Cookie: __utma=whateverthisisacookievalue;phpsessid=somePHPsessionID
data=thisisthepostdata&otherdata=moredummydata&etc=blah
所以正如其他人所说,POST和Cookie(和GET数据,即查询字符串)都容易欺骗,因为他们都只是文本在相同的HTTP数据包中。
真的,如果你担心哪一个更容易伪造,你担心错误的东西。简而言之,对于一个经验丰富的攻击者来说,要么是微不足道的。你可以通过选择一个“脚本小子”来排除那些“脚本小子”,但这些人不是你需要担心的。你应该问自己的问题是“你对付伪造身份证的人有什么防范?”它会发生。如果你的ID没有加密,而且容易猜到,那就是个问题。它会被黑客入侵。既然你问哪个更安全,我会说你担心。
这是另一个要考虑的事情,因为你的应用程序是闪存的,所以修改(就像javascript的HTML代码)是可以接受的,因为编译的代码在攻击者机器上。他们可以查看二进制代码并找出代码的工作方式,以及需要从服务器检索的内容。
我只想重申,Cookie和Post都同样不安全。
使用cookie可以在传输之前要求SSL,并且您可以指定HttpOnly;也就是说,我认为cookie比POST更具潜在优势,因为那些安全措施甚至不可用。 – 2011-08-20 09:08:26
重要的是要注意内容长度会告诉服务器在请求中需要多少数据,以免发生无限的等待或缓冲区溢出。 – 2009-02-26 02:38:01