Quảng cáo ở đây

Khắc phục lỗi Validation of viewstate MAC failed ... trong asp.net

Đăng lúc: Thứ bảy - 06/04/2013 13:29 - Người đăng bài viết: admin
Khắc phục lỗi Validation of viewstate MAC failed ... trong asp.net

Khắc phục lỗi Validation of viewstate MAC failed ... trong asp.net

Hầu hết các website bằng asp.net thường mắc lỗi. Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Khi ta chạy website viết bằng ASP.NET trên web-hosting mà có nhiều website cùng chạy, mỗi khi ta cập nhật thư viện, assembly, mã nguồn mới (các file cs), khi đó nếu người dùng submit lên từ một trang được sinh ra từ code cũ có thể sẽ gặp phải lỗi “Validation of viewstate MAC failed”. Trong bài viết này tôi sẽ hướng dẫn cách khắc phục triệt để lỗi trên.
Cách giải quyết thứ nhất:
Thêm đoạn cấu hình sau vào trong thẻ trong file web.config

Hoặc thêm dòng:
Tuy nhiên, với việc disable các tính năng trên, ta cũng sẽ mất một số tính năng phòng vệ trước kỹ thuật tấn công Cross-site Request Forgery mà framework đã hỗ trợ sẵn.
Sinh machineKey cho site
Để tránh gặp phải lỗi “Validation of viewstate MAC failed”, ta cung cấp các key cho việc validate viewState thay vì để cho IIS tự sinh (AutoGenerate) bằng cách cấu hình thẻ machineKey trong system.web ở file web.config.
<machinekey
validationKey=”AutoGenerate,IsolateApps” [String]
decryptionKey=”AutoGenerate,IsolateApps” [String]
validation=”HMACSHA256″ [SHA1 | MD5 | 3DES | AES | HMACSHA256 |
HMACSHA384 | HMACSHA512 | alg:algorithm_name]
decryption=”Auto” [Auto | DES | 3DES | AES | alg:algorithm_name]
/>
Trong đó:
decryption: nhận một trong các thuật toán sau: Auto | DES | 3DES | AES | alg:algorithm_name
validation: nhận một trong các hàm băm, mã hóa sau: SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512
decryptionKey: 64 bit nếu decryption là DES; 192bit nếu là 3DES; 128, 192 hoặc 256 bit nếu là AES
validationKey: 128 bit nếu validation là MD5; 160 bit nếu là SHA1; 192 bit nếu là DES; 256 nếu là AES hoặc HMACSHA256; 384bit nếu là HMACSHA384; 512bit nếu là HMACSHA512
Ví dụ như:

Xem thêm cách thông tin machineKey tại MSDN: machineKey Element

Để sinh machineKey bạn có thể sử dụng Tool sinh machineKey online

</machinekey
Tác giả bài viết: Endy Hoàng
Nguồn tin: itexpressvn.net
Nếu thấy bài viết hay, hãy nhấn Like (Thích) để khích lệ người viết bài!
Đánh giá bài viết
Tổng số điểm của bài viết là: 5 trong 1 đánh giá
Click để đánh giá bài viết
 

Quảng cáo

Thiết kế website bán hàng

Quảng cáo

Liên hệ quảng cáo: 0934 816 678

Quảng cáo

Đặt quảng cáo ở đây

Tìm chúng tôi trên các mạng xã hội

Tìm chúng tôi trên facebook Thêm chúng tôi vào Google +1 của bạn Theo dõi chúng tôi trên Twitter

Bộ đếm

  • Đang truy cập: 44
  • Hôm nay: 3109
  • Tháng hiện tại: 165346
  • Tổng lượt truy cập: 12121412


Endy Hoàng