验证用户输入HTML子集
Validate User-Input HTML Subset
我正在寻找一种验证用户输入HTML的方法,类似于你在评论表单中看到的。用户的输入应该局限于最基本的标签,如p、ul、li、div、img。唯一允许的属性是样式。
验证可以通过Javascript在客户端进行,也可以通过Ruby在服务器端进行。我希望能找到一个能够做到这一点的Javascript库,或者至少能找到几个RegExe来做到这一步。
谢谢你的建议。
您可以使用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'}
}
)
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何编写HTML输入的JS内联
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量
- 如何使Javascript动态html表及其上的事件
- 在chrome.tabs.onCreated之后加载HTML页面
- 如何在vs2002中调试html页面
- 如何使用javascript或html下载PDF格式的填写表单
- 视频HTML没有'无法在Internet Explorer 11上工作
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 使用angular重定向到html页面
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 修改 html 的子集并使用 jquery 附加它
- 在 JavaScript 中呈现一个安全的 HTML 子集
- 验证用户输入HTML子集