首页 > 解决方案 > 解决 ruby​​ on rails 上的 XSS 问题

问题描述

示例:如果我们存储<script>alert(299792458)</script>为名字输入,则该值将被接受并存储。

当我们显示数据时,会弹出一个警报。我知道这是一个跨站点脚本 (XSS)。我已经浏览了http://guides.rubyonrails.org/security.html#cross-site-scripting-xss但我无法理解。

我需要做的就是确保警报不会发生。那么,最好的选择是什么。保存名字时对其进行清理(或)在显示时使用 html_safe。

标签: rubyxsssanitizejavascript-injectionhtml-safe

解决方案


我使用了这个功能,它按预期工作。

CGI::escapeHTML(user.firstname)

在显示页面上,它显示<script>alert("123");</script>但脚本没有运行,因为它转义了标签。


推荐阅读