很久没写文章了,总有一种忘记了登录密码的感觉。
前几天,某人跟我说他用steam登录一些交易网站的时候会出错
此处应@gt798.com 你们站有问题呢。
问题:
通过Steam登录后,返回的用户名被PHP为经过HTML字符转码直接输出到网页里,而Steam的用户名恰好又可以任意修改,不过只允许2-32个字符
像是这样。
然后登录@gt798.com
这个时候,我们就可以通过这样的方式插入JavaScript代码,那么有什么用呢?
1.在别的用户的页面里输出JavaScript代码,例如跳转等。
因为在这些交易网站,很多都会打出卖家/买家的用户名,这样如果未经过HTML字符处理,就可以为所欲为地运行我们的JavaScript代码,例如跳转到自己博客什么的。
2.SQL注入
有的交易网站可能会把你的用户名写入到数据库里,同样的,如果这串字符未经过SQL防注入处理,就可以去注入了,实现方法有待考究,此处只写一个思路。
解决方法
在自己的SteamAPI里添加htmlspecialchars() 这个函数,就能简单地避免在网页输出JavaScript了,而SQL防注入也可以按照同理去做。
效果如下
第一次写这类型的文章,哪里做得不好可以纠正下
这就是XSS漏洞啊∠( ᐛ 」∠)_
嗯哼