【问题标题】:is it possible to tamper post data when using frames使用框架时是否可以篡改发布数据
【发布时间】:2010-01-06 18:55:55
【问题描述】:

我有一个使用框架的网站。是否仍然可以从浏览器中让某人使用地址栏为其中一个框架制作发布数据?其中 2 个框架是静态的,另一个框架具有使用 post 进行通信的 php 页面。这似乎不可能,但我想确定一下。

【问题讨论】:

    标签: php frameset postdata


    【解决方案1】:

    不,不能从地址栏POST数据。您只能通过向 URL 添加参数来从那里发起 GET 请求。不能以这种方式附加 POST 正文。

    无论如何,很有可能将 POST 请求发送到您的网络服务器以获取框架中的页面。 HTTP is just the protocol 与您的浏览器和网络服务器相互通信。 HTTP 对帧或 HTML 一无所知。框架中的页面有一个 URI,就像任何其他页面一样。当您单击一个链接时,您的浏览器会询问服务器它是否具有该 URI 的 something。服务器将检查它是否具有该 URI 的内容并做出相应的响应。它不知道会返回什么

    使用TamperData for FirefoxFiddler for IE 等工具,任何人都可以轻松修改发送到您服务器的HTTP 请求。

    【讨论】:

    • 我最喜欢你的回答,但它并没有完全回答它。这些页面适用于 Intranet,因此我不太担心用户拥有地址栏之外的工具。我想要避免的情况是,他们可以在地址栏中执行某些操作,例如 view_form?id=5 并打开该页面,而无需通过进入 view_form.php 页面的表单
    • 听起来您不相信您需要验证您的输入。只要意识到,在某些时候,有人会想办法弄乱你的表格,你会看起来很糟糕。
    • 没有在 php 应用程序中验证输入。我不想要的是 joe blow 用户在 url 的地址栏中输入获取数据并试图偷偷摸摸他们不应该做的事情。使用框架,您无法从地址栏中看到框架中包含的页面
    • @controlfreak123:右键单击一个框架并选择“显示页面信息”或在英文浏览器中调用的任何内容,它会告诉您 URL。绝对没有办法阻止用户找到您的 URL。如果他们可以在浏览器中显示该页面,他们就可以找到该页面的 URL。如果他们能找到 URL,他们就可以修改请求。
    • @controlfreak123:如果您担心用户查看他们不应访问的页面,请在您的应用程序中实施访问控制列表 (ACL) 或使用 BasicAccess 身份验证保护这些页面。
    【解决方案2】:

    无论来源和/或环境如何,$_REQUEST 数组中的任何数据都应被视为同等武装和危险。这包括$_GET$_POST$_COOKIE

    【讨论】:

      【解决方案3】:

      不能在地址栏中添加POST数据。

      您应该始终检查和清理您在 PHP 代码中获得的所有数据,因为任何人都可以将数据发布到您的所有页面。

      不要相信来自页面外部的数据。清洁并检查。

      【讨论】:

        【解决方案4】:

        也许不是来自浏览器,但他们仍然可以捕获请求(修补它)并将其转发到提供的目的地,使用类似 burp 代理的工具。

        【讨论】:

          【解决方案5】:

          回答您的问题:不,无法使用地址栏发送帖子数据。

          但是可以快速将帖子数据发送到任何网址。例如使用 cURL 或 Firefox 扩展。因此,请务必验证和清理您收到的所有数据,无论是 POST 还是 GET 或 UPDATE 等等。

          这不是 iFrame 或 php 特定的,因此应该在每个 web 应用程序中考虑它。永远不要依赖任何人发送的数据是否正确、有效或安全——尤其是用户发送的数据。

          【讨论】:

            【解决方案6】:

            是的,他们绝对可以,使用像 Firebug 这样的工具,以及像 Gordon 列出的那些显然更专业的工具。此外,即使他们无法在您网站的浏览器中执行此操作,他们也可以始终创建自己的表单,或通过脚本或命令行工具提交发布数据。

            您绝对不能依赖客户端来确保安全。

            【讨论】:

            • 正如我在下面的答案中评论的那样。用户在使用 IE 的 Intranet 上没有你们所指的任何工具。因此将问题仅限于地址栏
            • 构建一个简单的 html 表单来提交用户想要的任何内容是非常简单的。他们只需要一个文本编辑器。
            • 如果无法将表单上传到服务器,他们将如何让 apache 提供表单服务?
            • Apache 不需要提供表单,它只响应它。他们可以只做<form action="http://controlfreak123.bla/response.php"><input type="hidden" value="malice" name="controlfreaks_element_name" /></form>,然后提交表格。他们只需将其保存在桌面上,然后使用 Web 浏览器打开即可。您可能正在使用会话,但使用脚本工具也很容易解决。 (例如,通过在获得有效会话 ID 后发送带有会话 ID 的 cookie 标头)
            猜你喜欢
            • 2022-08-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-07
            • 1970-01-01
            • 2014-07-22
            相关资源
            最近更新 更多