从YouBBS的一个SQL注入漏洞,总结一下程序设计中一些要注意的点
从YouBBS的一个SQL注入漏洞,总结一下程序设计中一些要注意的点
By lincanbin
at 2015-07-11
0人收藏 • 3022人看过
Youbbs出现了一个比较严重的SQL注入漏洞。
http://youbbs.sinaapp.com/t/1911
YouBBS这个漏洞出现的原因主要有三点:
技术选型在SQL连接库上选用了已废弃特性mysql而不是PDO或者mysqli,SQL必须预处理/使用参数绑定分离命令和数据才足够安全;PDO在自行编译extension的情况下,就算在进了棺材的PHP 5.1中也是可以正常执行的。
没有对所有用户输入进行有效的过滤,默认应该认为所有来自用户端的输入都是不可靠的;
错误信息直接显示而不是写入日志,错误信息抛出后不需要给用户查看,只要自己记入Log即可,这估计是图个开发方便。
- 登录后方可回帖
7 个回复 | 最后更新于 2015-08-02
下面转载下YouBBS漏洞信息原文:
来源:http://youbbs.sinaapp.com/t/1911
YouBBS存在问题的版本:
v1.04,v2.0
v1.04把:
// 获取当前用户 $cur_user = null; $cur_uid = $_COOKIE['cur_uid']; $cur_uname = $_COOKIE['cur_uname']; $cur_ucode = $_COOKIE['cur_ucode'];替换为:
// 获取当前用户 $cur_user = null; $cur_uid = isset($_COOKIE['cur_uid']) ? intval($_COOKIE['cur_uid']) : ''; $cur_uname = isset($_COOKIE['cur_uname']) ? $_COOKIE['cur_uname'] : ''; $cur_ucode = isset($_COOKIE['cur_ucode']) ? $_COOKIE['cur_ucode'] : '';v2.0把:
// 获取当前用户 $cur_user = null; $cur_uid = isset($_COOKIE['cur_uid']) ? $_COOKIE['cur_uid'] : ''; $cur_uname = isset($_COOKIE['cur_uname']) ? $_COOKIE['cur_uname'] : ''; $cur_ucode = isset($_COOKIE['cur_ucode']) ? $_COOKIE['cur_ucode'] : '';替换为:
// 获取当前用户 $cur_user = null; $cur_uid = isset($_COOKIE['cur_uid']) ? intval($_COOKIE['cur_uid']) : ''; $cur_uname = isset($_COOKIE['cur_uname']) ? $_COOKIE['cur_uname'] : ''; $cur_ucode = isset($_COOKIE['cur_ucode']) ? $_COOKIE['cur_ucode'] : '';漏洞截图:
回复#2 @szdbb112 :
是MySQL,YouBBS是一套类似的论坛程序,他们出现了Bug,我当然要关注一下。
回复#4 @atest :111
回复#5 @atest :
不要纯表情水