2009-06-01 28 views
7

Tôi tiếp tục gặp lỗi như thế này trên một trong các trang web của mình. Nó có xu hướng xảy ra ngẫu nhiên trong suốt bất kỳ thời gian nào trong đêm khi tôi không mong đợi người dùng trên trang web.Lỗi ScriptResource: tôi có bị tấn công không?

Nó luôn luôn là từ các địa chỉ ip khác nhau

System.Web.HttpException: Invalid viewstate. at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s)

hoặc

System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed. at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s)

Họ xảy ra trong trang này:

ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR 

Các trang web sử dụng Ajax và chạy trên NET 3.

I s này ai đó cố gắng để hack vào trang web? Có phải là lỗi với html trên trang web không?

Bất kỳ ý tưởng nào?

Trả lời

5

Tôi tin rằng lỗi này là do ViewState của bạn được giải mã bằng cách sử dụng ViewStateUserKey lỗi thời.

Loại bỏ các lỗi này là một quá trình hai bước:

  1. Đảm bảo bạn có một phím xác nhận trang web cụ thể. Bạn có thể sử dụng một số tài nguyên trực tuyến để tạo một tài nguyên cho bạn, chẳng hạn như this one.
  2. Đảm bảo ViewStateUserKey của trang luôn nhất quán. Từ các tài liệu MSDN:

Setting the ViewStateUserKey property can help you prevent attacks on your application from malicious users. It does this by allowing you to assign an identifier to the view-state variable for individual users so that they cannot use the variable to generate an attack. You can set this property to any string value, such as the user's session ID or the user's authenticated name.

Bạn có thể làm điều này bằng cách thiết lập nó cho mình (có lẽ trong trang của bạn hay sự kiện Init cơ sở sơ của):

if (Session["ViewStateUserKey"] == null) 
{ 
    Session["ViewStateUserKey"] = new Guid().ToString(); 
}  
this.Page.ViewStateUserKey = Session["ViewStateUserKey"].ToString(); 

Và không, tôi không nghĩ rằng bạn đang bị tấn công.

+0

Vâng đó là một phước lành, Cảm ơn câu trả lời của bạn, tôi sẽ cung cấp cho nó một đi. Điều này có dẫn đến lỗi trên trình duyệt của người dùng không? – Paul

+0

Tôi cho rằng nó phải làm, mặc dù tôi chưa bao giờ có thể tự tái tạo nó - tôi đã nhìn thấy rất nhiều nhật ký với lỗi này trong chúng. –

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