【问题标题】:Prevent Content Injection into HTTP Req Headers防止内容注入到 HTTP 请求标头中
【发布时间】:2020-06-30 18:24:34
【问题描述】:

我正在使用Requestly Chrome 扩展来拦截和修改 HTTP 请求标头,并在我的 NodeJS 应用程序中更改它们的原始值。

如何防止攻击?例如,我可以更改 Referer 标头并注入链接。

【问题讨论】:

    标签: javascript node.js ajax security http-headers


    【解决方案1】:

    没有办法阻止用户这样做。

    您不能信任 Referer 标头。

    【讨论】:

    • 谢谢昆汀。如果我在 req 正文中传递信息(例如 - 链接)然后从标题中使用它会不会是正确的?
    • @Klark — 不。每个部分的请求都在用户的控制之下。
    • 在我的例子中,用户可以通过电子邮件分享内容。共享链接将发送到用户键入的电子邮件。共享链接是我的网站 URL - 我不想让用户更改它。
    • 所以我认为如果我在body req中传递它应该没问题?
    • 如果电子邮件是由用户从电子邮件客户端发送的,他们可以说任何他们想要的。如果它是从您的服务器发送的,那么它可以说出您想要的任何内容。您可以测试提交的 URL 是否属于您的网站,如果不是则抛出错误。
    【解决方案2】:

    你不能,但你可以尝试让事情变得更难做,这是一种棘手的方式来签署标头/数据(sha512 等)并在标头/cookie/数据中添加签名。

    在您的服务器上使用相同的函数来检查值是否在传输过程中被修改。

    “但是‘黑客’仍然可以尝试检查客户端代码并使用签名函数修改值?”

    是的,但是你可以把它变成完全不可见的东西:

    • 让你的应用程序包含一个无用的大脚本,什么都不做(当然丑化了)
    • 将您的签名函数划分为许多(许多)以随机字符命名的函数,然后将它们丑化,将其中一个放入您无用的大脚本中。
    • ...

    在客户端没有什么是可信任的,但您可以尝试阻止黑客:D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2017-10-07
      • 2015-07-13
      • 1970-01-01
      相关资源
      最近更新 更多