use*_*216 3 php security paypal tampering
我之前从未做过Paypal集成,但是我曾与其他网关合作过.
对于其他网关,还有一个哈希值也会在表单中发送,这会阻止人们篡改数据,即更改数量.
如何用paypal停止这种篡改,似乎没有任何哈希.
<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
<input type="hidden" value="_xclick" name="cmd">
<input type="hidden" value="online****@theg*****.com" name="business">
<!-- <input type="hidden" name="undefined_quantity" value="1" /> -->
<input type="hidden" value="Order" name="item_name">
<input type="hidden" value="NA" name="item_number">
<input type="hidden" value="22.16" name="amount">
<input type="hidden" value="5.17" name="shipping">
<input type="hidden" value="0" name="discount_amount">
<input type="hidden" value="0" name="no_shipping">
<input type="hidden" value="No comments" name="cn">
<input type="hidden" value="USD" name="currency_code">
<input type="hidden" value="http://XXX/XXX/XXX/paypal/return" name="return">
<input type="hidden" value="2" name="rm">
<input type="hidden" value="11255XXX" name="invoice">
<input type="hidden" value="US" name="lc">
<input type="hidden" value="PP-BuyNowBF" name="bn">
<input type="submit" value="Place Order!" name="finalizeOrder" id="finalizeOrder" class="submitButton">
</form>
Run Code Online (Sandbox Code Playgroud)
那么如何才能阻止人们在发布到PayPal之前修改金额?即数量应为100但人们将其更改为1.
有几种方法可以防止这种情况发生.首先是使用PayPal的即时付款通知(IPN).使用此功能,您可以将PayPal发回给您的价格进行比较,以确认它们符合您的预期.如果它们不匹配,则取消订单.
示例工作流程:

另一种选择是使用PayPal的Button API来创建动态加密按钮.它们嵌入到您的页面中,用户单击它以进行订购.由于它是加密的,因此用户无法在事务期间可靠地修改源代码.这个答案中提供了一个很好的例子.此外,您可以将其与上面列出的IPN选项结合使用,以充当对事务的良好审计