Wysyłanie pliku na serwer przez Spring Security i zabezpieczenie CSRF

Wysyłanie pliku na serwer przez Spring Security i zabezpieczenie CSRF
J1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 224
0

Posiadam w serwisie formularz za pomocą którego przesyłam na serwer plik.

Kopiuj
<form th:action="@{/user/settings/changeBasicData}" th:object="${changeBasicDataDTO}" method="POST"
                          class="form-horizontal" role="form" enctype="multipart/form-data">
                        <!-- left column -->
                        <div class="col-md-4 col-sm-6 col-xs-12">
                            <div class="text-center">
                                <img id="avatar" th:src="@{${session.user.getUrlAvatar()}}"
                                     class="avatar img-circle img-thumbnail" alt="avatar">
                                <h6>Upload a different photo...</h6>
                                <input th:name="multipartFile" type="file" class="text-center center-block well well-sm">
                            </div>
                        </div>
                        <!-- edit form column -->
                        <div class="col-md-8 col-sm-6 col-xs-12 personal-info">
                               ............                             
                        </div>
                            <div class="form-group">
                                <label class="col-md-3 control-label"></label>
                                <div class="col-md-8">
 
                                    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
                                    <button type="submit" class="btn btn-success btn-lg" id="btnSignIn">
                                        Save Changes
                                    </button>
                                    <span></span>
                                    <input class="btn btn-default" value="Cancel" type="reset">
                                </div>
                            </div>
                        </div>
                    </form>

Jak widać mam wpisaną regułkę

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

mimo to podczas wysyłania pliku strona wyrzuca

Kopiuj
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.

Wspomnę, że np logowanie i rejestracja normalnie przechodzi. A formularz, który przesyła pik już nie działa.

Fantazjatyk
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 133
0

A sprawdzałeś czy CSRF jest w ogóle wysyłany razem z requestem?
Probowałeś dodać go do sekcji head?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Wysyłasz formularz ajaxem?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.