2014-11-13 26 views
7

Tôi có trang web MVC 5 công khai, sử dụng mã thông báo chống giả mạo. Mỗi ngày, một số lượng lớn các lỗi được ghi lại dưới dạng "Mã thông báo cookie chống giả mạo và mã thông báo trường biểu mẫu không khớp." Và một số nhỏ hơn dưới dạng "Cookie chống giả mạo" __RequestVerificationToken "không được yêu cầu hiện tại.".Mã thông báo chống giả mạo MVC

Sự cố không thể lặp lại được, nó xảy ra cho những người khác nhau trên các trang khác nhau vào các thời điểm khác nhau. Đóng trình duyệt giải quyết sự cố - đôi khi chỉ cần sử dụng nút Quay lại và thử lại để khắc phục sự cố.

  • Khi trang web làm việc cho đại đa số người dùng, tôi có thể loại trừ thiếu ValidateAntiForgeryToken thuộc tính trong bộ điều khiển, tương tự như vậy, tôi có thể loại trừ thiếu hoặc trùng lặp @ Html.AntiForgeryToken() mã trong các quan điểm.

  • Trang web chạy trên một máy chủ duy nhất, vì vậy tôi có thể loại trừ các máy khác nhau trong web.config (tôi đã thử chạy trang web có và không có cài đặt này).

  • Hồ bơi ứng dụng được thiết lập để khởi động lại mỗi đêm và có rất nhiều tài nguyên dự phòng trên máy chủ , vì vậy tôi có thể loại bỏ hồ bơi khởi động lại và phiên không hợp lệ (đặc biệt vì điều này không được ghi vào nhật ký sự kiện hoặc bất cứ nơi nào khác).

  • Tôi đã gặp sự cố rất hiếm khi - tôi chắc chắn đã bật cookie, vì vậy tôi có thể loại trừ cookie bị vô hiệu hóa. Tôi cũng có thể loại trừ javascript bị vô hiệu hóa, vì người dùng chỉ có thể tiến triển cho đến nay vào trang web mà không có JS - và lỗi xảy ra trên các trang ngoài điểm này.

  • Tôi đã vô hiệu hóa tất cả bộ nhớ đệm, cài đặt nocache, nostore vv Điều này dường như giảm sự cố xảy ra nhưng vẫn tiếp tục (tôi phải bật lại bộ nhớ đệm vì nhiều lý do khác).

Còn tùy chọn nào khác để xem xét?

Tôi rất thất vọng vì điều này tôi đang cân nhắc việc tắt bảo vệ chống giả mạo và góp phần làm suy yếu an toàn toàn cầu.

+0

Có thể bạn đang đăng trên các tên miền (wwww đến không có www hoặc ngược lại) và cookie không còn tồn tại trong bước nhảy? –

+0

Tất cả các liên kết được tạo thông qua các trình trợ giúp MVC @, tất cả đều thừa kế URL cơ sở (tức là trừ khi khung MVC thay đổi tên miền, không). – user3728961

+0

bạn đã tìm thấy giải pháp chưa? Chỉ tò mò thôi. –

Trả lời

1

Đảm bảo bạn có thuộc tính Chống phân quyền cả trong bộ điều khiển và biểu mẫu.

Nếu bạn đang làm bài đăng ajax, bạn có thể gửi RequestValidationToken làm tham số.

$ ('input [name = __ RequestVerificationToken]'). Val()

Cũng có thể ai đó tấn công trang web của bạn hoặc sử dụng một số chương trình để có được nội dung hoặc bài mẫu.

+0

Thuộc tính AntiForgery là trong các bộ điều khiển và các hình thức - nếu không chắc chắn nó sẽ thất bại cho tất cả mọi người, tất cả các thời gian? Yêu cầu thông báo được gửi cùng với yêu cầu ajax. – user3728961

Các vấn đề liên quan