2011-09-07 3 views
2

이 예외에 대해 많은 질문이 있지만 내 요구 사항에 맞지 않는 항목을 찾을 수 없습니다. 유효성 검사를 비활성화하고 각 양식 입력 값을 수동으로 이스케이프하지 않으려하지 않습니다.ASP.NET MVC 3의 사용자에게 "잠재적으로 위험한 Request.Form 값"에 대한 오류 메시지를 표시하는 방법

ASP.NET MVC가 양식에 필수 값을 제공하지 않는다는 것을 사용자에게 알리는 것과 동일한 방법으로이 오류 메시지를 표시하는 방법이 있습니까? 나는 이것이 이런 종류의 오류를 다루는 가장 깨끗한 방법이라고 생각한다.

+0

jQuery를 사용하고 있습니까? 태그가 지정되지는 않지만 아마도 작동 할 수있는 솔루션 클라이언트 측을 생각할 수 있습니다. – hunter

+0

jQuery를 사용할 수는 있지만 잠재적으로 위험한 값 유효성 검사가 ASP.NET MVC에 추가되면 jQuery에 대한 자체 유효성 검사 논리를 작성하는 것을 원하지 않을 것입니다. , 그것은 내 구현에서 실종 될 것입니다. –

+0

플러스 누군가가 JavaScript 지원없이 나의 위치를 ​​사용하고 항상 아무것도 "말하지 않을 일반적인"내부 서버 오류 "페이지에 보낼 것입니다 가능성은 항상있다. –

답변

1

이 오류는 ASP.NET의 안전망입니다. Microsoft는 텍스트를 올바르게 인코딩했는지 확인한 후에이 오류를 비활성화 할 것을 기대합니다.

각 입력 양식 값을 수동으로 이스케이프 처리하는 것이 아닙니다. 페이지에 렌더링되는 모든 사용자 지향 텍스트를 인코딩하는 HTML에 관한 것입니다. 양식에 입력 된 텍스트가 자주 사용자에게 다시 표시됩니다.

예를 들어, "My age is > 21 & < 90" 문자열은 유효한 HTML이 아니며 사용자에게 올바르게 표시되지 않습니다 (교차 사이트 스크립트 공격에서 악용 될 수 있음). 표시중인 문자열이 이미 유효한 HTML이 아닌 경우 이 있으면 HTML 인코딩 할 수 있습니다. 다행히도 MVC에는 이것을 수행하는 쉬운 방법이 많이 있습니다 (<%: %> 연산자 사용). 이 작업을 올바르게 수행하면이 오류를 사용할 필요가 없습니다.

죄송합니다. 귀하 께서 요청하신 답변이 아님을 알고 있습니다 만,이 오류를 계속 유지하는 것이 여러 가지 이유로 사용자에게 우울하지 않을 것이라고 생각합니다.

+0

이것은 나를 위해 그것을 분명히했다. 나는 그것이 단지 안전망이라는 것을 깨닫지 못했다. –

3
$("form").submit(function(e){ 
    var invalid = $("form").find("input:text,input:hidden,textarea").filter(function() { 
     var value = $(this).val(); 
     var encoded = $("<div>").html(value).text(); 
     return value != encoded; 
    }).length > 0; 

    if (invalid) 
    { 
     e.preventDefault(); 
     //show validation message 
    } 
} 
+0

위대한 작품; 감사! – GendoIkari

관련 문제