如何保护隐藏的现场数据不被改变

时间:2013-10-24 12:33:36

标签: php html paypal

我正在使用一个插件很好的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/>';

任何链接,任何想法,任何建议将不胜感激。

由于

2 个答案:

答案 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非常安全。