这事儿吧,很多做网站的朋友都觉得离自己挺远,总觉得那是大厂才需要操心的事儿。结果呢?服务器莫名其妙被挂马,用户数据悄咪咪就被偷了,回头一查日志,全是XSS(跨站脚本攻击)留下的烂摊子。说白了,这玩意儿现在都快成“入门级”攻击手段了,门槛低、危害大,防不住,你的站点分分钟变成别人的免费肉鸡。
你有没有发现,你家小区单元门的对讲系统,如果谁都能随便贴张小纸条在上面,还能冒充物业发通知?XSS干的事儿就差不多。黑客不撬锁(不直接攻破服务器),他就在你网站那个“让用户留言”的输入框里,写一段恶意的JavaScript代码。你这网站要是没过滤,傻乎乎地把这段代码当成普通留言,存进数据库,再展示给其他用户看……完了,代码就在别人浏览器里执行了。轻则弹个恶作剧窗口,重则直接偷走用户的登录Cookie,账号瞬间易主。
这种最常见。黑客精心构造一个带恶意脚本的链接,然后通过邮件、论坛到处撒网。“兄弟,快看看这个搞笑视频!”,你一点,脚本就在你浏览器里跑起来了。它最大的特点是“一次性”,攻击代码在URL里,不存储在网站服务器上。但杀伤力一点不弱,偷个会话信息绰绰有余。
这才是最要命的。黑客把恶意脚本成功提交到你网站的数据库里了,比如留言板、用户昵称、文章评论。从此以后,每一个访问这个页面的用户,都会自动“中毒”。这玩意儿能长期潜伏,持续作案,危害范围呈指数级放大。很多数据泄露的大新闻,根子就在这儿。
这种比较隐蔽,不经过服务器。黑客利用前端JavaScript代码本身的漏洞,比如你的网站用`document.write`或者`innerHTML`,直接拼接了来自URL的参数。攻击链完全在用户浏览器里完成,服务器日志都查不到异常,排查起来特别头疼。
道理懂了,那咋防?别再相信什么“一个防火墙搞定一切”的鬼话了。防护XSS,你得从输入到输出,全程设卡。
对所有用户输入的数据,必须抱着“总有刁民想害朕”的心态。不是简单拦几个`