对于我的用户个人资料,我将让他们插入HTML代码,这些代码将显示在他们的个人资料中。
我们需要在保存个人资料时手动删除任何特殊标记吗?
除<script>
标签外,还有什么可能是危险的?
还有什么可能是“危险的”?
答案 0 :(得分:3)
a和img可能会有问题,因为它们允许链接到场外资源。它们还可以包含javascript:urls
避免让用户将任何头标签输入到身体的cotnent中。风格,链接,元,标题等
您还必须小心属性。不允许任何以on开头的属性,因为它们是javascript事件绑定。您还想检查javascript:和data:urls的任何URL属性。
已添加:
表格和他们的孩子也可能要避免,因为他们可以用来欺骗用户输入被其他网站收集的信息。
我建议在标记和属性方面使用白名单策略而不是黑名单,因为它更容易错过黑名单。随着HTML5越来越受到关注,还有一大堆新的标签和属性需要注意。
答案 1 :(得分:2)
几乎所有东西。你不知道人们没有这样做:
<img onload="hax" />
此外,您必须在服务器端验证它,而不仅仅是客户端
答案 2 :(得分:2)
img
似乎是另一个显而易见的问题。但我同意Lollero,不要考虑禁止什么,而是考虑允许。请记住,它不仅仅是标签,还包括属性。您希望构建标签的白名单以及要在其上允许的属性。
FWIW,这里是Wordpress默认使用评论的白名单(呃,至少我已经把它的相当过时的安装了):
a
href
- 请务必仅允许您允许的协议,例如,可能不允许javascript:
伪协议。title
abbr
title
acronym
title
b
blockquote
cite
cite
code
del
datetime
em
i
q
cite
strike
strong
(您可以在$allowedTags
中的wp-includes/kses.php
变量中找到此列表。)我认为这是相关的,因为Wordpress是一个非常受欢迎的平台。
答案 3 :(得分:2)
基本上删除所有标记和属性 ,除了 无害您想要允许的内容,p
,strong
,b
,em
,ul
,ol
,li
,div
,span
,h2
,{ {1}},h3
,u
如果您允许i
代码,请务必不要删除img
,alt
和src
属性。
如果您允许title
代码,请务必不要删除a
属性。
考虑到这一点,您的支票代码中可能的标签和属性列表几乎是无穷无尽的。
答案 4 :(得分:1)
假设您没有使用PHP或其他服务器端处理,我唯一担心的其他元素是iframe, object, and applet
如果您使用的是服务器端语言,请确保还要清理任何用户输入。
您可能还想了解XSS攻击,只是为了警惕任何恶意废话:http://ha.ckers.org/xss.html
答案 5 :(得分:1)
http://html5sec.org/是可以用来执行Javascript的好列表。
最好的方法是使用白名单:删除除了绝对安全之外的所有内容,例如几个基本的样式元素;如果可能,不要允许任何属性。