PHP的Steam登录API的XXS漏洞

很久没写文章了,总有一种忘记了登录密码的感觉。

前几天,某人跟我说他用steam登录一些交易网站的时候会出错

此处应@gt798.com 你们站有问题呢。

问题:

通过Steam登录后,返回的用户名被PHP为经过HTML字符转码直接输出到网页里,而Steam的用户名恰好又可以任意修改,不过只允许2-32个字符

像是这样。

然后登录@gt798.com

这个时候,我们就可以通过这样的方式插入JavaScript代码,那么有什么用呢?

1.在别的用户的页面里输出JavaScript代码,例如跳转等。

因为在这些交易网站,很多都会打出卖家/买家的用户名,这样如果未经过HTML字符处理,就可以为所欲为地运行我们的JavaScript代码,例如跳转到自己博客什么的。

2.SQL注入

有的交易网站可能会把你的用户名写入到数据库里,同样的,如果这串字符未经过SQL防注入处理,就可以去注入了,实现方法有待考究,此处只写一个思路。

 

解决方法

在自己的SteamAPI里添加 htmlspecialchars() 这个函数,就能简单地避免在网页输出JavaScript了,而SQL防注入也可以按照同理去做。

效果如下

 

第一次写这类型的文章,哪里做得不好可以纠正下

分享到:

2 条评论

昵称
  1. littleplus

    这就是XSS漏洞啊∠( ᐛ 」∠)_

    1. 很懒的樱花

      嗯哼