gpt4 book ai didi

ruby-on-rails - Rails的api方式如何防止XSS攻击?

转载 作者:行者123 更新时间:2023-12-05 02:42:50 24 4
gpt4 key购买 nike

我读过一篇关于防止 XSS 攻击的文章。它解释说,Rails 本身可以防止某些攻击。实际上 Rails 使用 ERB::Util#html_escape 函数来转义 HTML 实体。

<b>Hello <%= params[:name] %></b>
如果以上内容被?name=<script>alert(1)</script>攻击,输出结果如下:
<b> Hello &lt;script&gt;alert(1)&lt;/script&gt;gt; </b>

但是,当我通过这个 name在 API 模式下,它不起作用。

postman
url?name=<script>alert(1)</script>

Rails 应用
params[:name]
输出将是 "<script>alert(1)</script>" .

它有任何配置可以在 API 模式下正常工作吗?

最佳答案

接收这样的数据不是攻击。这是一种显示它的攻击。<​​/p>

默认情况下,Rails 在 HTML 上下文中转义,并且只在 HTML 上下文中转义,所以当您这样做时:

<p><%= params[:name] %></p>

您会看到无害的转义版本。解决此问题的唯一方法是,如果您不遗余力地使用 html_safe 声明它是安全的,除非您确定它是安全的,否则您不会这样做。

如果您有一个完全没有前端的 API 样式应用程序,那么恭喜您,您可以免受 XSS 攻击。但是,您的客户需要采取预防措施,以确保他们在适当的上下文中正确地转义任何内容。

换句话说,除非显示 HTML,否则 Rails 不会也不应该关心。

请记住,参数本身永远不会改变,它只是在显示之前进行了转义。

关于ruby-on-rails - Rails的api方式如何防止XSS攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67277271/

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