今天tiandi在做礼品卡兑换功能的手机版的时候发现,电脑版的礼品卡兑换功能有漏洞,用户可以通过前台修改兑换的礼品ID,而直接使用礼品卡来兑换任何礼品。
来看关键代码的FORM提交的时候,虽然goods_id做了隐藏属性,但是通过浏览器用户还是可以将其value改成任意值,由于后台文件没有对good_id进行任何验证,导致这样用户可以很随意的兑换到该礼品卡不能兑换的商品。
<form action="gift_gard.php" method="post" name="theForm" id="theForm" onsubmit="(function(){return check_take})"> ...... <input type="submit" name="Submit" class="bnt_blue_2" value="确认兑换" /> <input type="hidden" name="act" value="check_take" /> <input name="goods_id" id="goods_val_id" type="hidden" value="" /> </form>
解决办法,是在后台php文件添加验证。打开gift_gard.php中找到下面的第一行,在其后面添加余下的代码。
$goods_id = empty($_POST['goods_id']) ? '0' : trim($_POST['goods_id']); //by tiandi 后台增加兑换礼品id验证,避免被前台篡改ID后提非礼品卡上的货 $sql = "SELECT config_goods_id FROM " . $ecs->table('user_gift_gard') . " WHERE gift_sn='$_SESSION[gift_sn]'"; $goods_ids = $db->getOne($sql); $goods_ids = ",".$goods_ids; if(!stristr($goods_ids,",".$goods_id.",")) show_message('非法操作!', '返回重新提货', 'gift_gard.php', 'error');
OK,大功告成!
文章评分2次,平均分5.0:★★★★★
求资源地址 tks 1304135191@qq.com
亲 资料地址呢
解决就很好
一直都是Ecshop,一直插不上话
想办法插。。。哈哈。