Jcr*_*crt 6 ruby xss tinymce ruby-on-rails
我有一个由Rails3编写的网站.我的帖子模型有一个文本列,命名为"content".在后面板中,html表单使用tinymce将"content"列设置为textarea字段.在首页中,由于使用了tinymce,post.html.erb代码需要用raw方法实现<%= raw @post.content %>.
好的,现在如果我关闭浏览器javascript,这个textarea可以输入没有tinymce,也许用户会输入任何xss之类的<script>alert('xss');</script>.我的前面会显示警报框.
我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式.例如,<span style='color:red;'>foo</span>将成为<span>foo</span>.
我的问题是:如何过滤xss输入并同时保留tinymce风格?
小智 2
可以将消毒剂设置为允许样式属性。在您的config/application.rb添加中:
config.action_view.sanitized_allowed_attributes = ['style']
Run Code Online (Sandbox Code Playgroud)
sanitize 方法还具有其允许的 css 属性和关键字的默认值。请参阅sanitizer.rb allowed_css_properties并allowed_css_keywords获取默认值列表。
要添加一些当前不允许的内容,请将其添加到您的config/application.rb:
config.action_view.sanitized_allowed_css_keywords = ['puke']
Run Code Online (Sandbox Code Playgroud)
--
如果您要做的事情比这更复杂,那么您需要编写一些代码。我不建议从头开始执行此操作,请查看Loofah Gem以获得用于编写 html 洗涤器的良好库。
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |