这段代码会不会被注入式攻击?

CatherineW 2005-09-08 10:05:55
function checkpass($username,$password){
global $db,$timestamp,$onlineip;
$men=$db->get_one("SELECT uid,password,groupid,onlineip,yz FROM pw_members m WHERE username='$username'");
if($men){
$e_login=explode("|",$men['onlineip']);
if($e_login[0]!=$onlineip.' *' || ($timestamp-$e_login[1])>600 || $e_login[2]>1 ){
$men_uid=$men['uid'];
$men_pwd=$men['password'];
$check_pwd=$password;
$yz=$men['yz'];
if(strlen($men_pwd)==16){
$check_pwd=substr($password,8,16);/*支持 16 位 md5截取密码*/
}
if($men_pwd==$check_pwd){
if(strlen($men_pwd)==16){
$db->update("UPDATE pw_members SET password='$password' WHERE uid='$men_uid'");
}
$L_groupid=$men['groupid'];
$hp=1;
}else{
$L_T=$e_login[2];
$L_T ? $L_T--:$L_T=5;
$F_login="$onlineip *|$timestamp|$L_T";
$db->update("UPDATE pw_members SET onlineip='$F_login' WHERE uid='$men_uid'");
$hp=2;//密码错误,您还可以尝试 $e_login[1] 次
}
}else{
$L_T=600-($timestamp-$e_login[1]);
$hp=3;
}
}
return array($hp,$L_T,$men_uid,$L_groupid,$password,$yz);
}

...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CatherineW 2005-09-23
  • 打赏
  • 举报
回复
还有谁知道?
Cain 2005-09-16
  • 打赏
  • 举报
回复
对用户提交过来的数据一定要检查
CatherineW 2005-09-15
  • 打赏
  • 举报
回复
$username 已经对sql关键字作了过滤
xuzuning 2005-09-08
  • 打赏
  • 举报
回复
men=$db->get_one("SELECT uid,password,groupid,onlineip,yz FROM pw_members m WHERE username='$username'");

只要你不对$username做有效性检查,就有可能被攻击
zly22169846 2005-09-08
  • 打赏
  • 举报
回复
("SELECT uid,password,groupid,onlineip,yz FROM pw_members m WHERE username='$username'")
看你传过来的username有没有做过滤和安全性检测,这个是最重要的.其它的没什么大问题.
最起码单引号式注入要过滤
zydz 2005-09-08
  • 打赏
  • 举报
回复
会的。只要对方猜到你的字段名。。
zairwolfo 2005-09-08
  • 打赏
  • 举报
回复
checkpass函数本身和外面没有对两个参数进行addslashes的话,有可能。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧