2010-08-23 16 views
6

Có cách nào để vô hiệu xác thực yêu cầu cho một số hộp văn bản nhất định thay vì toàn bộ trang không? Tôi đang sử dụng Server.HtmlEncode/Decode vì người dùng hợp pháp sử dụng < và> ký tự nhưng tôi không muốn sử dụng ValidateRequest="false" trên toàn bộ trang vì ai đó có thể thêm hộp văn bản sau và quên thoát khỏi đầu vào trong trường hợp tôi muốn xác thực để xảy ra do đó, lỗi sẽ được phát hiện thay vì dễ bị tấn công bởi html.asp.net ValidateRequest = false cho mỗi hộp văn bản thay vì mỗi trang?

Dường như có một giải pháp đơn giản nhưng tôi không có may mắn khi tìm thấy nó.

(Biểu mẫu web không phải MVC)

+0

Vâng đó là đau đớn -> .NET 4.5 đã không được phát hành khi tôi đăng câu trả lời của tôi. – Tommy

+0

@Tôi biết, cũng không phải khi tôi đặt câu hỏi, tuy nhiên đó là câu trả lời cập nhật hơn và sẽ hữu ích hơn cho người dùng trong tương lai khi đọc câu hỏi này. Bạn trả lời vẫn còn upvoted mặc dù. – Davy8

+0

Haha - Tôi biết :) Không có gì cá nhân, nhưng tôi đã phải kiểm tra xem nó ra. PS - có vẻ như tôi đã gần gũi với NET 5,0 bình luận của tôi dưới đây. – Tommy

Trả lời

3

Không, yêu cầu xác thực là cho toàn bộ yêu cầu và không thể thực hiện trên yếu tố theo yếu tố cơ bản. Yêu cầu xác thực được kích hoạt bởi ASP.NET theo mặc định và là để giúp những người không biết về việc khử trùng các đầu vào HTML từ các cuộc tấn công tiêm script. Đăng một số liên kết bên dưới để đọc thêm:

MSDN

Stackoverflow

+0

Tôi thấy nó hoài nghi rằng không có cách nào để làm điều đó cho mỗi kiểm soát. Ngay cả một ai đó biết những gì họ đang làm đôi khi có thể quên và nó sẽ là tốt để có một dự phòng. Tuy nhiên, dù sao đi nữa, vì tôi đã không thể tìm thấy bất cứ điều gì ngược lại. Nếu không có gì xảy ra vào ngày mai tôi sẽ chấp nhận. – Davy8

+0

Có lẽ một cái gì đó cho. NET 5.0 :) – Tommy

+0

Tôi đồng ý rằng nó vô lý rằng điều này không được hỗ trợ, nhưng sự hiểu biết của tôi là @Tommy là chính xác, nó thực sự là không thể trong ASP.NET hiện tại. – Stuart

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