【问题标题】:Is POST as secure as a Cookie?POST 和 Cookie 一样安全吗?
【发布时间】:2009-02-26 01:53:18
【问题描述】:

在实现flash-based uploader 时,我们遇到了一个问题:Flash doesn't provide the correct cookies。 我们需要通过 POST 变量传递 PHP 会话 ID。

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

POST Session ID 是否与在 cookie 中发送一样安全?

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

【问题讨论】:

    标签: php security session cookies swfupload


    【解决方案1】:

    它和 cookie 一样安全——伪造 POST 和 cookie 一样容易。这些都是通过简单地在 cURL 中设置标志来完成的。

    话虽如此,我认为您也有一个很好的解决方案。

    【讨论】:

      【解决方案2】:

      如果您能够从活动内容中获取会话 ID 以进行发布,这可能意味着您的会话 cookie 未标记为 HttpOnly,我们的一位主机声称否则为 a good idea for defending against cross-site scripting attacks

      请考虑使用基于 JavaScript 甚至基于刷新的上传器监控器,它应该与其他所有东西很好地集成在一起,以便 cookie 可以是 HttpOnly。

      另一方面,如果您的网站不接受第三方内容,则可能无需担心跨站脚本攻击;在这种情况下,POST 很好。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          真的,如果您担心哪个更容易伪造,那么您担心的是错误的事情。简而言之,对于有经验的攻击者来说,两者都是微不足道的。您可能会通过选择一个而不是另一个来避开“脚本小子”,但这些人并不是您需要担心的人。您应该问自己的问题是“您对伪造身份的人有什么防御措施?”它会发生。如果你的 id 是未加密的,而且很容易被猜到,那就是个问题。它会被黑客入侵。既然你问哪个更安全,我会说你很担心。

          还有一点需要考虑,因为您的应用程序是 Flash,它很容易被修改(就像 javascript HTML 代码一样),因为编译后的代码在攻击者的机器上。他们可以查看二进制文件并弄清楚代码是如何工作的,以及需要从服务器检索什么。

          【讨论】:

            【解决方案5】:

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

            【讨论】:

            • 需要注意的是,content-length 会告诉服务器在请求中期望有多少数据,以免发生无限等待或缓冲区溢出。
            【解决方案6】:

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

            【讨论】:

            • 使用 cookie,您可以在传输前要求 SSL,您可以指定 HttpOnly;也就是说,我认为 cookie 比 POST 具有潜在优势,因为 POST 甚至没有这些保护措施。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-14
            • 2011-06-02
            • 2012-01-22
            • 1970-01-01
            • 2014-05-29
            • 2014-09-17
            相关资源
            最近更新 更多