1

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

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

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

4

1 回答 1

1

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

CGI::escapeHTML(user.firstname)

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

于 2018-06-20T14:41:24.997 回答