0
我正在使用Django 1.7與django-paypal。django paypal - 如何防止用戶篡改金額
我按照tutorial,一切工作正常。
但是,雖然付款表單是隱藏的,但我發現用戶可以通過簡單地使用瀏覽器檢查元素功能來調節金額。
例如。
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input id="id_business" name="business" type="hidden" value="[email protected]">
<input id="id_amount" name="amount" type="hidden" value="10.0">
<input id="id_item_name" name="item_name" type="hidden" value="2">
<input id="id_notify_url" name="notify_url" type="hidden" value="http://www.example.com/pp/ipn/">
<input id="id_cancel_return" name="cancel_return" type="hidden" value="http://www.example.com/order/21/">
<input id="id_return_url" name="return" type="hidden" value="http://www.example.com/thank-you">
<input id="id_invoice" name="invoice" type="hidden" value="21"><input id="id_cmd" name="cmd" type="hidden" value="_xclick">
<input id="id_charset" name="charset" type="hidden" value="utf-8">
<input id="id_currency_code" name="currency_code" type="hidden" value="USD">
<input id="id_no_shipping" name="no_shipping" type="hidden" value="1">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="Buy it Now">
</from>
這是一個錯誤還是我錯過了什麼?如何防止用戶欺詐付款?我應該在ipn視圖上驗證付款嗎?
這會起作用,但我有更復雜的銷售項目。所以,它不會更靈活。另外,我想在未來添加其他網關,因此可以用於所有付款的適當驗證更好。任何服務器端驗證? – 2014-10-02 11:16:45
如果您想要動態值,您可以使用明文方法在服務器端填充動態/複雜的銷售項目,並將值傳遞給paypal。這樣您就不會在安全性上妥協並將值暴露給最終用戶。 – Vimalnath 2014-10-02 16:42:46