【发布时间】:2011-10-26 23:56:42
【问题描述】:
所以我有一个网站,用户可以使用他们选择的用户名进行注册,并且可以提交大块文本并添加 cmets。目前,为了避免 XSS,我在输入到数据库的数据上使用 strip_tags,并且我只在正文中输出数据,而不是在属性中。 我目前正在对该站点进行更改,其中之一是创建一个用户页面,当有人单击用户名(链接)时加载该页面。这看起来像:
<a href="example.com/user/<?php echo $username; ?>">...</a>
我担心对于 $username 变量,有人可能会插入
<a href="example.com/user/user" onClick="javascript:alert('XSS');">...</a>
我已经阅读了很多关于此的其他 SO 帖子,但没有一个给出非黑即白的答案。如果我在输出上的所有文本上使用以下内容,除了输入上的 strip_tags:
echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
这是否足以阻止所有 XSS 攻击,包括那些使用内联 javascript: 语法的攻击?
另外,有什么方法可以在不删除“我>你”之类的内容的情况下删除实际的 html 标签?
谢谢!
【问题讨论】:
-
+1 关心安全!
标签: php html xss htmlspecialchars strip-tags