2014-01-15 194 views
7

我有登錄表單,我想保護它免受csrf atacks。春季安全csrf爲空

我的彈簧security.xml文件

<sec:http auto-config="true" use-expressions="true"> 
    ... 
    <sec:csrf /> 
</sec:http> 

我的JSP文件(用磚):

<form class="navbar-form navbar-right form-inline" method="POST" role="form" 
    action="j_spring_security_check"> 
    <div class="form-group"> 
    <input class="form-control" type="email" name="j_username"> 
    </div> 
    <div class="form-group"> 
    <input class="form-control" type="password" name="j_password"> 
    </div> 
    <button class="btn btn-default" type="submit">Login</button> 

    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"> 
</form> 

給我的授權,但CSRF是空的:

<input type="hidden" value="" name=""> 

燦任何人都幫助我?

+2

只是爲了確定您是否有任何 blocks?如果是這樣,請確保您沒有禁用登錄表單上的安全性。您確定已正確安裝了jstl嗎? –

回答

0

你確定你有正確的JSTL設置嗎?你嘗試過使用標籤嗎?如果下面的作品,那麼JSTL可能是不正確設置:

<c:out value="${_csrf.parameterName}"/> 

只要是一定的,你有什麼塊?如果是這樣,請確保您沒有禁用登錄表單上的安全性。

0

我已清除.m2目錄並重新導入所有依賴項。它對我有幫助。

2

如果您將應用security =「none」,則不會生成csrf標記。頁面不會通過安全過濾器。使用角色ANONYMOUS。

我還沒有詳細介紹,但它是爲我工作。

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/login.jsp" access="hasRole('ANONYMOUS')" /> 
    <!-- you configuration --> 
</http>