以前写的邀请码购买功能总有各种各样的问题,今晚在审计主题的时候,顺手进行了一波优化~
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~
站长 你好! 我想咨询点事情 我看你两年前 发布一个 连接VPN 就可以获取信息 我想玩玩那个 不知道怎么联系你呢 可以加个联系方式没啊