emlog模板防止跨站漏洞教程(所有模板作者请务必阅读)
0
1825
2017年9月30日
进过我的调查,发现大家贡献很多的模板中都没有对URL中的参数进行必要的过滤,从而给黑客留下跨站攻击的空子。
在这里我举一个典型的例子供大家参考,下面是某个CMS模板输出搜索关键词的代码,
?php }elseif($params[1]=='keyword'){ ?> 关键词 <b><?php echo urldecode($params[2]);?></b> 的搜索结果
请 注意$params[2]变量没有任何过滤的就直接输出了,而我们可以构造/index.php?keyword=8<img src=1 width=500 height=500 onerror=alert(1)>在页面上运行javascript代码alert(1). 黑客在攻击时可以把alert(1)替换为攻击代码(比如获取访问者的cookie信息)后发给站长。如果站长不小心点了链接,那么黑客就能获取站长登陆 状态的cookie,有了cookie,就能冒充站长登陆站点后台做他想做的任何事情了。
综上所述,为了各位用户的安全着想,请各位模板作者在输出URL参数时使用PHP的htmlspecialchars函数来进行过滤,防止XSS攻击,像上面例子中的代码可以修改为
?php }elseif($params[1]=='keyword'){ ?> 关键词 <b><?php echo htmlspecialchars(urldecode($params[2]));?></b> 的搜索结果
最后还是要感谢各位模板的作者为emlog的无私付出,希望这篇教程能给大家做出安全好用的模板提供一定的帮助。
这个主题简介啊