gpt4 book ai didi

javascript - Rack 中间件到前置 while(1);所有 ajax/json 请求

转载 作者:行者123 更新时间:2023-11-30 17:57:32 24 4
gpt4 key购买 nike

我想做一些类似于 Google/Facebook 在这篇文章中所做的事情: Why does Google prepend while(1); to their JSON responses?

在 Rails 应用程序中使用 Rack 中间件,将 while(1); 添加到脚本和 json 帖子的开头。这样我们就可以返回执行 ajax GET 请求(响应中可能包含也可能不包含 authentity_token 或敏感数据)。

我们还有一个不需要使用它的 API,所以我在考虑中间件不启动的一些 url 匹配。

谁能给我指出正确的方向,这段代码可能是什么样子的?谢谢!

最佳答案

我认为有很多问题合而为一。

中间件本身看起来像这样(没有检查过,但感觉不错):

class AntiHijackingMiddleware
def call(env)
status, headers, body = @app.call(env) # save initial state

if env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest" && headers['Content-type'].to_s.include?("application/json")
body = "while(1);"+body
headers['Content-Length'] = Rack::Utils.bytesize(body.to_s).to_s
end

[status, headers, body]
end
end

您可以在 env["REQUEST_URI"] 上添加额外的条件来进行 url 匹配。

将它添加到 Rails 的中间件堆栈是样板文件。

关于javascript - Rack 中间件到前置 while(1);所有 ajax/json 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17803753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com