繁体   English   中英

验证用户输入的HTML子集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM