进过我的调查,发现大家贡献很多的模板中都没有对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的无私付出,希望这篇教程能给大家做出安全好用的模板提供一定的帮助。
本文来源于
emlog论坛,由em管理员:
朦胧之影 发布
End
温馨提示:如果您对本文有疑问,请在本页留言即可!!!
留言/评论:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。