我正在使用一个插件很好的paypal lite按钮,我不安全的隐藏字段携带交易金钱,商家电子邮件ID。通过萤火虫,我编辑了这些字段值,不幸的是我的编辑值成功地进入了paypal。
我尝试了readonly
,但也没有帮助。
那么我该怎样做才能避免这种情况.....
$f .= '<input type="hidden" name="business" value="'.$a['email'].'" readonly/>';
$f .= '<input type="hidden" id="customer_name" name="cmd" value="'.$a['command'].'" readonly/>';
$f .= '<input type="hidden" name="item_name" value="'.$a['name'].'" readonly/>';
$f .= '<input type="hidden" id="pay_amount" name="amount" value="'.$a['amount'].'" readonly/>';
任何链接,任何想法,任何建议将不胜感激。
由于
答案 0 :(得分:1)
这不是你必须担心的事情*。用户总是能够编辑客户端数据。因此,一个人可以更改他们的数据,以便他们在其他地方发送付款,这与登录他们的帐户并在任何他们想要的地方发送付款相同。您需要担心的是人们可以更改其他用户的付款信息。我不是安全专家,但这就是为什么要清理站点上显示的所有动态数据(即不要信任数据库中的数据)。您还可以通过TLS为页面提供服务,以防止流量被操纵(例如,受到破坏的路由器)。
答案 1 :(得分:0)
记录
步骤1)生成唯一的验证ID。因此,如果信息被更改,您可以再次对其进行验证。
$key=md5($a['email'].$a['name']...$SOMESALT);
$f .= '<input type="hidden" name="validation" value="'.$key.'" />';
第2步)在验证信息时,您可以验证完整性
$validation=@$_POST['validation'];
$key=md5(@$_POST['email'].@$_POST['name']...$SOMESALT); // again
if ($key!=$validation) {
die('nope');
}
可选:您可以通过生成随机盐并将其存储在会话中来增强安全性。
在这种情况下,MD5非常安全。