Mr.Wu

1,306 1 正在检测是否收录...

以前写的邀请码购买功能总有各种各样的问题,今晚在审计主题的时候,顺手进行了一波优化~

1.

$gl_data_WIDbody = filter_var($data_WIDbody, FILTER_VALIDATE_EMAIL);	//对$data_WIDbody 数据进行过滤

filter_var() 函数有缺陷,可能造成安全漏洞,因此改用正则过滤.
优化后:

$regex = '/^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[-_a-z0-9][-_a-z0-9]*\.)*(?:[a-z0-9][-a-z0-9]{0,62})\.(?:(?:[a-z]{2}\.)?[a-z]{2,})$/i';
$data_WIDbody = $_POST['WIDbody'];	//接收WIDbody POST数据
if (preg_match($regex, $data_WIDbody)) {
} else{
	echo "<script>alert('邮箱格式有误,请重新填写!');window.location.href='https://www.mrwu.red/xss#pay'</script>";
	exit;
}

2.
存在逻辑漏洞,提交邮箱,跳转支付宝页面的同时会自动往数据库插入数据,没有判断是否支付购买成功,导致二次提交同一个邮箱显示已购买.
这个问题虽然不存在什么安全性问题,但是用户体验贼不好,所以重新梳理了一波 if 判断,这里就不贴代码了.
优化后效果:
用户提交邮箱,先判断邮箱格式,然后在查询数据库是否已经购买过,如果没有购买,跳转到支付宝页面,如果购买过则提示返回.
跳转支付宝页面后不会在往数据库插入数据,需要付款购买成功后才会写入购买记录.完美 bi de fo~

发表评论 取消回复
表情 图片 链接 代码

  1. 爱的故事
    爱的故事 Lv 1

    站长 你好! 我想咨询点事情 我看你两年前 发布一个 连接VPN 就可以获取信息 我想玩玩那个 不知道怎么联系你呢 可以加个联系方式没啊