CSRF
TIL
500
CSRF
4
Security
25
White

Quan viết ngày 15/03/2017

Cross-Site Request Forgery explained

A quick example

Consider the below screen of an online bank. End users use this form to transfer money after success authentication.
alt text

Transfer money
<form action="http://bank-site.com/Transfer" method=post>
Enter Amount <input name="amount" value="100.23" /> 
Enter Account number <input name="account" value="1001" /> 
<input type=submit value="transfer money" /> 
</form>

Below is a forged site created by an attacker which looks a game site from outside, but internally it hits the bank site for money transfer.
alt text

The internal HTML of the forged site has those hidden fields which have the account number and amount to do money transfer, it POST data to the same url above.

Win 1000000 US$
<form action="http://bank-site.com/Transfer" method=post>
<input type=hidden name="amount" value="10000" /> 
<input type=hidden name="account" value="3002" /> 
<input type=submit value="Play the ultimate game" /> 
</form>

Now let’s say the user has logged into the bank-site and the attacker sent this forged game link to his email. The end-user thinks that it’s a game site, clicks on the “Play the Ultimate Game” button and internally the malicious code does the money transfer process.
alt text

How to prevent

  • Check the Referer HTTP header and verify that the request originated from a page internal to your web application.
  • CSRF token:
    • Server generates a one-time token, adds it to hidden field of form.
    • When user sends request, token is submited with form. This token is validated on the server.

source

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Quan

10 bài viết.
2 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
1 0
Clojure supports flexible concurrency models for real world complexity: (Link): builtin support. (Link): similar to Golang concurrency model, w...
Quan viết 12 tháng trước
1 0
White
1 0
clojure (defn updatevalues m f & args] (reduce (fn r k v]] (assoc r k (apply f v args))) {} m)) (updatevalues {:a 1 :b 2 :c 3} inc) ;;= {:c 4,...
Quan viết 12 tháng trước
1 0
Bài viết liên quan
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
10 bài viết.
2 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!