2011-11-12 6 views
2

MVC, EF 사용 4.2. 나는 코멘트 섹션을 가지고있는 어플리케이션에서 일하고있다. 예를 들어 사용자가 HTML이 포함 된 주석을 입력하면사용자가 HTML 설명을 입력하는 방법

<b>text</b> 

과 안타

  1. 어떻게 내가 HTML은 DB에가는 길에 처리하나요

    "... ptentially 위험으로 Request.Form 값이 감지되었습니다"라는 메시지 를 얻을 제출? 난 그냥 HTML을 스트립해야합니까? 아니면 그것을 인코딩? 내가 server.html 텍스트를 시도했지만 여전히 동일한 오류 메시지가있었습니다.

내가 SO에서 여기에 몇 가지를 포함하여 문제에 대한 게시물의 수를 읽고 - this onethis one 이상적으로

, 나는 그런 그들을 강력한으로 html 태그의 제한된 수 있도록 수 있도록하고 싶습니다 , a. Anti-XSS, HTML 민첩성, BB 코드 또는 markdown 스타일 편집기가 여전히 권장되는 방법입니까? Jeff가 화이트리스트 비트를 가지고 있다는 것을 알고 있습니다.하지만 몇 년 전입니다.

답변

1

당신은

[ValidateInput(false)] 
public ActionResult foo() 
{ 
} 

할 수 또는 당신은 또한 당신의 Web.config에서 requestValidationMode 설정해야 할 수도 있습니다 AllowHtml

public class Foo 
    { 
     [AllowHtml] 
     public string bar{ get; set; } 
    } 
+0

나는 그 속성을 보았지만 XSS 및 악성 코드가 주석을 통해 제출 될 가능성을 허용하지 않았습니까? –

+0

예전과 비교해 보면 이전 뷰 엔진 (이름을 잊어 버렸습니다)을 사용하고 있다면'<% : Html.TextBoxFor %> '를 쓸 수 있습니다. 값을 인코딩하거나 면도기'@'구문을 사용하는 경우 html을 인코딩 할 것입니다 – Rafay

+0

xss 및 기타 코드가 [Microsoft의 Anti-XSS] (http://wpl.codeplex.com/) 라이브러리에 대해 걱정되는 경우 – Buildstarted

0

와 모델의 속성을 장식 할 수 있습니다

</system.web> 
    <httpRuntime requestValidationMode="2.0" /> 
</system.web> 

자세한 내용은 this link을 참조하십시오.

0

MVC에는 유효성 검사를 완전히 비활성화하지 않고 html을 허용해야하는 속성을 지정할 수있는 특성이 있습니다. 여전히 위험하지만 위험을 완화 할 수 있도록 하나의 속성으로 제한 될 수 있습니다. 다음은 MSDN article for the AllowHtmlAttribute입니다. 속성의 적절한 사용은 모델에서 해당 속성을 장식하는 것 :

public class MyModel 
{ 
    public MyModel() 
    { 

    } 

    // Some other stuff in here 

    [AllowHtml] 
    [HttpPost] 
    public string MyHtmlString { get; set; } 

} 
0

다음과 같이 html로 incomments 허용에 대한 나의 해결책은 다음과 같습니다 CommentText 속성에

  1. AllowHtml를 내 댓글 클래스에서
  2. 좁은 태그 그룹을 허용하십시오. 코멘트에 HTML을 보여 Html.Raw를 사용, 난 일반적으로 출력시
  3. 처럼
  4. 가 그런 다음 DB에 결과를 저장 화이트리스트를 통해 허용되지 않는 HTML을 청소할 HTML을 소독약 클래스와 인라인 스크립트를 사용하여
관련 문제