2009-02-26 32 views
1

在执行flash-based uploader时,我们遇到了一个问题:Flash doesn't provide the correct cookies。 我们需要我们的PHP会话ID通过POST变量传递。POST是否像Cookie一样安全?

我们想出了并实现了一个功能性解决方案,检查POST PHPSESSID。

是否将发布会话ID安全地发送到cookie中?

可能的原因:因为两者都在http标头中,并且同样可能让客户伪造。 可能的原因是:因为伪造POST变量比Cookie更容易。

回答

5

它是安全的 - 锻造POST与cookie一样简单。这些都是通过简单地在cURL中设置标志来完成的。

这就是说,我认为你也有一个很好的解决方案。

2

如果您能够从活动内容获取会话ID以便进行发布,这大概意味着您的会话Cookie不标记为HttpOnly,我们的主持人声明其中一个是a good idea for defending against cross-site scripting attacks

请考虑使用基于JavaScript的甚至基于刷新的上传器监视器,该监视器应该与Cookie可以为HttpOnly的其他所有内容充分结合。另一方面,如果您的网站不接受第三方内容,则跨网站脚本攻击可能不会受到任何关注;如果您的网站不接受第三方内容,在这种情况下,POST很好。

2

我认为通过GET发送它也可以正常工作,因为你在HTTP请求中使用了任何东西(使用卷曲或甚至是闪烁)。 重要的是你在cookie/post/get参数中加密了什么,以及它如何在服务器端加密和检查。

0

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数据包中。

+0

重要的是要注意内容长度会告诉服务器在请求中需要多少数据,以免发生无限的等待或缓冲区溢出。 – 2009-02-26 02:38:01

1

真的,如果你担心哪一个更容易伪造,你担心错误的东西。简而言之,对于一个经验丰富的攻击者来说,要么是微不足道的。你可以通过选择一个“脚本小子”来排除那些“脚本小子”,但这些人不是你需要担心的。你应该问自己的问题是“你对付伪造身份证的人有什么防范?”它会发生。如果你的ID没有加密,而且容易猜到,那就是个问题。它会被黑客入侵。既然你问哪个更安全,我会说你担心。

这是另一个要考虑的事情,因为你的应用程序是闪存的,所以修改(就像javascript的HTML代码)是可以接受的,因为编译的代码在攻击者机器上。他们可以查看二进制代码并找出代码的工作方式,以及需要从服务器检索的内容。

0

我只想重申,Cookie和Post都同样不安全。

+0

使用cookie可以在传输之前要求SSL,并且您可以指定HttpOnly;也就是说,我认为cookie比POST更具潜在优势,因为那些安全措施甚至不可用。 – 2011-08-20 09:08:26