Bao mat nhap mon

(ndkhanh157) #1

Chôm cookie (Cookie thief) bằng XSS: Với lỗ hỗng XSS, hacker có thể chạy mã độc (JavaScript)
ở phía người dùng. JS có thể đọc giá trị từ cookie với hàm document.cookie. Hacker có thể gửi
cookie này tới server của mình. Cookie này sẽ được dùng để mạo danh người dùng.


Thực hiện tấn công kiểu CSRF (Cross-site request forgery). Hacker có thể post một link ảnh
như sau:


<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=mallory">

Trình duyệt sẽ tự động load link trong ảnh, dĩ nhiên là có kèm theo cookie. Đường link trong
ảnh sẽ đọc cookie từ request, xác nhận người dùng, rút sạch tiền mà người dùng không hề
hay biết. Cách tấn công này có rất nhiều biến thể, mình sẽ nói rõ ở phần sau.


Cách phòng chống


Có thể áp dụng một số phương pháp sau:


 Set Expired và Max-Age: Để giảm thiểu thiệt hại khi cookie bị trộm, ta không nên để
cookie sống quá lâu. Nên set thời gian sống của cookie trong khoảng 1 ngày tới 3
tháng, tuỳ theo yêu cầu của application.
 Sử dụng Flag HTTP Only: Cookie có flag này sẽ không thể truy cập thông qua
hàm document.cookie. Do đó, dù web có bị lỗi XSS thì hacker không thể đánh cắp được
nó.
 Sử dụng Flag Secure: Cookie có flag này chỉ được gửi qua giao thức HTTPS, hacker sẽ
không thể sniff được.

Vì cookie dễ bị tấn công, tuyệt đối không chứa những thông tin quan trọng trong cookie (Mật
khẩu, số tài khoản, ...). Nếu bắt buộc phải lưu thì cần mã hoá cẩn thận.


Lưu ý: Nếu website của bạn sử dụng RESTful API, đừng sử dụng cookie để authorize người
dùng mà hãy dùng OAuth hoặc WebToken. Token này được vào Header của mỗi request nên
sẽ không bị dính lỗi CSRF.


Các bạn có thể tìm hiểu thêm về cookie và các lỗi bảo mật liên quan ở đây:


 http://resources.infosecinstitute.com/securing-cookies-httponly-secure-flags/
 http://www.ibm.com/support/knowledgecenter/SSZLC2_7.0.0/com.ibm.commerce.
admin.doc/concepts/csesmsession_mgmt.htm
 https://www.nczonline.net/blog/2009/05/05/http-cookies-explained/
 https://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly
 http://programmers.stackexchange.com/questions/298973/rest-api-security-stored-
token-vs-jwt-vs-oauth
Free download pdf