[英]Validate User-Input HTML Subset
我正在寻找一种验证用户输入HTML的方法,类似于您在评论表单中看到的内容。 用户的输入应限于最基本的标签,例如p,ul,li,div,img。 唯一允许的属性是样式。
验证可以通过Javascript在客户端进行,也可以通过Ruby在服务器端进行。 我希望找到一个可以做到这一点的Javascript库,或者至少找到几个RegExes来做到这一点。
感谢您的建议。
您可以使用Sanitize过滤HTML。
使用您在问题中列出的示例元素,您将在验证代码中使用如下所示的内容:
Sanitize.clean(html,
:elements => ['p', 'ul', 'li', 'div', 'img'],
:attributes => {'
'all' => ['style']
}
)
正如我在上面的评论中所提到的,允许style
属性可能很危险,特别是如果您允许<a>
标签,因为如果用户创建了一个覆盖整个页面的不可见链接,它就会使您容易遭受点击劫持攻击。
如果您确实希望允许<a>
标记,我建议您完全禁止使用style
并且可能在用户提供的链接中添加rel=nofollow
:
Sanitize.clean(html,
:elements => ['p', 'ul', 'li', 'div', 'img', 'a'],
:add_attributes => {
'a' => {'rel' => 'nofollow'}
}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.