2009-08-04 6 views
7

클라이언트에서 javascript 변수에 입력되는 문자열을 서버에 작성합니다.아포스트로피 인코딩

내가이 같은 일을하고있는 서버에

지금 당장 모든 문제를 방지하기 위해이를 인코딩하는 가장 좋은 것입니다 :

html = html.Replace("'", "'"); 

을하지만 난 더 우아한 바보 증거 방법이 있다고 가정 이런 식으로하고있어.

답변

10

이렇게하려면 Microsoft Anti-Cross Site Scripting Library을 사용하는 것이 좋습니다. 그들은 당신이 원하는 않는 JavaScriptEncode 방법 제공 :

Microsoft.Security.Application.AntiXss.JavaScriptEncode("My 'Quotes' and ""more"".", False) 
+0

프런트 엔드에 이스케이프 처리하는 것을 잊지 마세요 예를 들어 경고 상자에 사용하려는 경우 –

+0

누 겟 패키지 : http://nuget.org/packages/AntiXSS/ –

1

난 당신이 문자열을 사용하고있는 상황에서 확실하지 않다, 그러나 \' 당신이 찾고있는 무슨 수 있습니다. 백 슬래시는 이스케이프 문자로, 문자열 리터럴에 존재할 수없는 certain characters을 사용할 수 있습니다. 물론

alert('It\'s amazing'); 

, 당신은이 특별한 경우에 alert("It's amazing");을 사용할 수 있습니다 :이 같은 출력 자바 스크립트가 보일 것입니다 것입니다. 자바 스크립트 코드를 작성하는 경우

어쨌든, : 한편

html = html.Replace("'", "\\'"); 

를 일부 처리가 필요 아포스트로피 외에 다른 문자가 있습니다. Microsoft Anti-Cross Site Scripting Library을 사용하면 모든 것을 한꺼번에 가져올 수 있습니다.

0

문자열 값에서 이스케이프해야하는 문자는 백 슬래시와 문자열 구분 기호로 사용되는 문자입니다.

아포스트로피 (') 문자열 구분 기호로 사용되는 경우 :

따옴표 (") 문자열 구분 기호로 사용되는 경우
html = html.Replace(@"\", @"\\").Replace("'", @"\'"); 

:

html = html.Replace(@"\", @"\\").Replace(@"""", @"\"""); 

당신이 인 구분을 모르는 경우 사용하거나 향후 변경 될 수 있다면, 당신은 모두 탈출 할 수

html = html.Replace(@"\", @"\\").Replace("'", @"\'").Replace(@"""", @"\"""); 
1
html = html.Replace("'", "%27"); 
1

AntiXSS 라이브러리가 서버 측을 인코딩하고 javascript로 디코딩하는 것을 내가 찾고있는 것을 성취 할 수 없다는 것을 발견했습니다.

GlobalObject.escape(string); 

와 자바 스크립트에서 클라이언트 측에서 :

대신 나는 당신을 수 있습니다 Microsoft.JScript.dll을 사용

unescape(string); 
관련 문제