在Rails中清理输出HTML的最佳解决方案是什么(避免XSS攻击)?

我有两个选择:来自Sanitize Helper的white_list插件或sanitize方法 http: //api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html 。对我来说,直到今天white_list插件工作得更好,在过去,Sanitize是非常错误的,但作为Core的一部分,可能它将在开发中并得到支持一段时间。

有帮助吗?

解决方案

我认为h helper方法可以在这里工作:

<%= h @user.profile %>

这将转义尖括号,从而中和任何嵌入的JavaScript。当然,这也将消除用户可能使用的任何格式。

如果您想要格式化,可以查看降价。

其他提示

我个人认为在任何网络应用中接受任何HTML条目并不是一个小决定。您可以根据需要测试白/黑名单标签,但除非您正在测试正确的嵌套,否则有人可能会输入一系列结束标签,例如

</td></tr></span></div>

并且确实弄乱了你的布局。

我通常会给人们像Textile这样的东西来输入他们的标记,因为我宁愿花时间研究业务逻辑而不是HTML解析。

当然,如果这个文本条目对你的应用程序来说更为基础(例如它适用于stackoverflow),那么你可能应该更多地关注自己动手。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top