2012-12-05 3 views
0

저는 코드 스 니펫을 저장할 수있는 C# MVC 사이트를 만들고 있습니다. 내 코드에 붙여 넣을 텍스트 영역을 사용합니다. 특정 문자를 저장하려고하면 오류가 발생합니다. 나는 jqueryUI를 사용하고있다. <> 문자가 포함 된 문자열을 자바 스크립트로 저장합니다.

은 snippetAdd 내 텍스트 영역의 ID 인 DB 내 텍스트 영역에 저장하는 기능입니다 : 작은 따옴표없이, 나는 경우 과거에하고 다음을 저장하려고 예를 들어,

function addSnippet() { 

    $("#newSnippet").show(); 
    var myStuff = { snippetCode: $('#snippetAdd').val(), lexiconId: $('#lexiconId').val(), snippetDesc: $('#snippetDescAdd').val() }; 
    var aURL = "/Lexicon/addSnippet"; 
    $.post(aURL, myStuff, function(data) { parseMessage(data); }, 'json'); 
} 

그것을 실패

'<'일부 코드 '>'

감사합니다!

+1

"실패"하면 어떻게됩니까? –

답변

0

저는 입력 내용을 인코딩하지 않는다는 문제가 있다고 생각합니다. (이것은 추측 그래서 당신은 오류 설명하지 않았다.) 어쨌든, 귀하의 의견 모두와 함께이 일을 시도 :

encodeURI($('#snippetAdd').val()) 

이 자신의 인코딩 등가물과 특수 문자를 대체하여 문자열을 HTML로 인코딩합니다. 물론 필드에 입력 된 원래 코드를 다시 구성하려면 서버 측에서 문자열을 디코딩해야합니다.

0

@LeviBotelho가 올바른 접근 방식을가집니다. 그러나, 당신은 또한 컨트롤러를 주석으로 들어오는 데이터의 유효성을 검사하지 MVC 말할 수있는 옵션이 있습니다 :

[HttpPost, ValidateInput(false)] 
public ActionResult Index(MyModel model) 
{...} 

주 : 잠재적 인 스크립트 삽입 공격에 열려있는 서버를 떠날 때 이것은 가장 안전한 방법이 아닙니다. 사용자를 신뢰하고 즉시 서버 측 인코딩을 수행하는 경우이를 사용해야합니다.

관련 문제