2012-03-28 2 views
3

저는 전자 상거래 선물 가게가있어 사용자가 수령인의 선물 카드를 작성할 수 있습니다.Html.Raw()를 안전하게 사용하고 있습니까?

카드를 작성하기 위해 사용자가 여러 줄로 된 텍스트 상자에 텍스트를 입력하게했습니다.

최종 검토 페이지에 기프트 카드를 표시 할 때, Html.Raw로 정보를 뱉어 내야 뉴 라인이 제대로 표시됩니다. 나는이 일을 해요 :

@(Model.GiftCard.Text != null ? Html.Raw(Model.GiftCard.Text.Replace(char.ConvertFromUtf32(13),"<br />")) : Html.Raw("")) 

가 나는 사용자가-입력 된 값에 Html.Raw를 사용하여 위험 지역에 진입하고있어 것을 두려워 해요. 그러나 기프트 카드 입력 페이지로 돌아 가면 "이것은 내 기프트 카드입니다 (스크립트 태그) 경고 ('테스트'); (/ 스크립트 태그)"... 그래서 나는 그 점에서 .net가 어떤 악의적 인 항목도 잡는 것처럼 느낍니다.

나는 이렇게 진행하는 것이 안전할까요? 기프트 카드 입력 페이지가 악성 코드에 대한 유효성 검사를 실행하고 있기 때문에 나중에 HtmlRaw를 사용하여 나 자신을 넣는 개행 HTML을 표시하는 것이 좋습니다.

(실제 스크립트 태그 위의 (scripttag) 위의 내용은 stackoverflow에 표시됩니다.

+0

필자는 허용되는 문자로 입력을 제한하는 입력란에 유효성을 검사하거나 값에 html.encode를 사용합니다. – Brian

+0

허용되는 문자 만 허용하도록하는 데 도움이되는 예제 또는 링크가 있습니까? 그게 자바 스크립트에 (따라서, 당신은 그것을 해킹하고 어쨌든 다른 것을 게시 할 수 있습니까?) –

+0

예 자바 스크립트 것입니다. 그렇습니다. 아마도 html.encode가 필드에 오게되어 주사 공격에 사용될 수있는 문자가 처리됩니다. 게시 할 수있는 JS 유효성 검사에 대해 알아볼 것입니다. – Brian

답변

2

사람들이 A-Za-z0-9 만 입력하면 다음과 같이 사용해야한다고 생각하는 정규식을 사용하십시오. :) =] 물건 유형. 이 물건 프런트 엔드를 상영하는 것은 나가는 길에 그것을 추측하는 것보다 낫습니다.

+0

< and > –

+0

을 사용하지 못하게하는 정규 표현식 만들기 데이터베이스가 < or >으로 변환 될 수있는 모든 항목 또는 임의의 문자열 변환 ... 항상 특정 우물을 제외하고는 모두 허용하지 말아야합니다. 특정 문자를 방지하는 대신 정의 된 값. –

0

방법 대신 < 사전 > </사전 > 태그를 사용하는 방법에 대해? 이렇게하면 Html.Raw를 사용하지 않고도 HTML로 표시 할 수 있습니다.

관련 문제