我試圖測試由Symfony2完成的CRSF保護系統,非常感謝他們。
我security.yml模板(我修改了默認的。)Symfony2 CRSF保護如何工作?
security:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: _security_check
login_path: _demo_login
csrf_provider: form.csrf_provider
logout:
path: _demo_logout
target: _demo
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
access_control:
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
在我的形式:
<input type="hidden" name="_csrf_token" value="{{ csrf_token("authenticate") }}">
這產生這樣的:
<input type="hidden" name="_csrf_token" value="cKzXBHRDX_sHuT4qt9TAJIwgRvtRMtPnFDtitrSZDuw">
我不不知道symfony是如何處理token的驗證的,但在提交我的登錄信息之前,我使用螢火蟲手動更改了令牌的值,如下所示:
<input type="hidden" name="_csrf_token" value="MODIFIEDcKzXBHRDX_sHuT4qt9TAJIwgRvtRMtPnFDtitrSZDuw">
當我提交我的登錄名時,我登錄了,這意味着令牌沒有任何影響。 我在哪裏錯了?
獵鷸
- Symfony的版本是2.5.2
- 該系統時,我手動設置會話變量 「記錄」 爲true簽署了我。從數據庫中讀取並比較密碼後,會發生這種情況。
表格Html!
<form id="Loginform" onsubmit="OrganicLogin();return false;"> <input type="hidden" name="_csrf_token" value="{{ csrf_token("authenticate") }}"> <div id="Loginresponse" style="display:none;"></div> <div class="form-group" style="overflow:hidden;"> <label style="margin-top:10px;" for="inputUsername" class="col-lg-2 control-label">Username</label> <div class="col-lg-10"> <input type="text" class="form-control" id="inputUsername" placeholder="Username" style="width:215px;float:right;"> </div> </div> <div class="form-group" style="overflow:hidden;" > <label style="margin-top:10px;" for="inputPassword" class="col-lg-2 control-label">Password</label> <div class="col-lg-10"> <input type="password" class="form-control" id="inputPassword" placeholder="Password" style="width:215px;float:right;"> </div> </div> <div class="form-group" style="overflow:hidden;text-align:center;" > <button type="submit" class="btn btn-primary btn-block" id="submitButton">Access</button> </div></form>
是的!我做了
實際上,我一直在爭論整個時間,我以本地方式進行登錄過程,形式,用JS讀取數據,向控制器發送POST請求,控制器檢查輸入並設置會話。
沒有,全部由手工完成
其實這是我第一次使用security.yml,我只是去掉了一些部分我不判斷此線程
沒有有用的..
我的登錄網址是/ login – Sekai 2014-09-10 13:57:01
您可以通過cURL和POST方法測試ist(只是不要設置_csrf_token字段)並打印輸出。 – 2014-09-10 14:39:06
我是否需要在控制器中寫入任何內容? – Sekai 2014-09-10 15:36:50