【发布时间】:2014-09-24 21:16:14
【问题描述】:
场景是用户选择一些产品,然后点击付款。在这里,我将他/她重定向到 IPG(银行的互联网支付网关),并在付款完成时传递我的返回 URL 并完成采购订单。在我添加弹簧安全之前,一切正常。
但如果在某些内部视图中发布此网址,一切都会再次正常工作。
这很好(弹簧安全启用,一切正常)
<form:form method="post" name="saleform" id="saleform"
action="http://localhost:8080/Click2Pay/salecomplete">
<input class="btn btn-primary" type="submit" value=" SaleComplete "
id="btnsalecomplete" name="btnsalecomplete" />
</form:form>
@RequestMapping(value = "/salecomplete", method = RequestMethod.POST)
public String salecomplete(HttpServletRequest request,
HttpServletResponse response, Model m)
throws
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin/**" access="hasRole('admin')" />
<access-denied-handler error-page="/403" />
<form-login login-page="/login" default-target-url="/admin/admin"
authentication-failure-url="/login?error" username-parameter="username"
password-parameter="password" />
<logout logout-success-url="/login?logout" />
<!-- enable csrf protection -->
<csrf />
</http>
<authentication-manager>
<authentication-provider user-service-ref="UserAuthenService">
<password-encoder hash="sha" />
</authentication-provider>
</authentication-manager>
在浏览器中查看银行IPG的来源(https://pna.shaparak.ir/CardServices/paymentSuccess.html)
<form action="http://localhost:8080/Click2Pay/salecomplete"
method="post" autocomplete="off">
<div class="commandBar">
<input type="hidden" name="redirectURL" id="redirectURL"
value="http://localhost:8080/Click2Pay/salecomplete" />
<input type="hidden" name="MID" id="MID" value="01134254" />
<input type="hidden" name="ResNum" id="ResNum" value="162" />
<input type="hidden" name="RefNum" id="RefNum"
value="00000000021278797788" /> <input type="hidden"
name="CustomerRefNum" id="CustomerRefNum" value="421320082083" />
<input type="hidden" name="State" id="State" value="OK" /> <input
type="hidden" name="language" id="language" value="fa" /> <input
type="hidden" name="CardPanHash" id="CardPanHash"
value="417bf6657c3830d051b4e9bab45203508c386787d4c083244c4dbac82bd559b8" />
<input type="submit" value="تکمیل خرید"
class="button btn btn-success btn-lg" name="Submit" />
<input type="button" value="لغو خرید"
class="button btn btn-default btn-lg" name="cancelButton"
id="cancelButton" onclick="document.forms['returnForm'].submit();" />
</div>
</form>
有什么问题?
【问题讨论】:
-
可能是csrf保护。如果银行网站发回给您,这是跨站点请求,我看不到银行表格中的 csrf 令牌。尝试暂时禁用 csrf 保护。
-
是的,这个问题。我在发布这个问题后的第二天找到它。如果你想发布你的答案。
标签: java spring spring-mvc spring-security