HTML 속성 내에서 따옴표를 올바르게 이스케이프 처리하려면 어떻게해야합니까? 문자열을 올바르게 탈출하기

값 문자열에 따옴표가 포함되어 있으면 웹 페이지에 드롭 다운이 있습니다.

값은 "asd입니다. DOM에서는 항상 빈 문자열로 나타납니다.

나는 문자열을 올바르게 탈출하기 위해 모든 방법을 시도했지만 아무 소용이 없습니다.

<option value=""asd">test</option>
<option value="\"asd">test</option>
<option value="&quot;asd">test</option>
<option value="&#34;asd">test</option>

포스트 백 메시지에 올바른 값이 포함되도록이를 페이지에서 어떻게 렌더링합니까?



답변

&quot; 세 번째 테스트의 올바른 방법입니다.

<option value="&quot;asd">test</option>

아래 또는 jsFiddle 에서 작동하는 것을 볼 수 있습니다 .

alert($("option")[0].value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option value="&quot;asd">Test</option>
</select>

또는 작은 따옴표로 속성 값을 구분할 수 있습니다.

<option value='"asd'>test</option>

답변

PHP를 사용하는 경우, 호출 htmlentities또는 htmlspecialchars기능을 시도하십시오 .


답변

HTML 구문 , 심지어 HTML5 , 다음은 유효한 모든 옵션은 다음과 같습니다 :

<option value="&quot;asd">test</option>
<option value="&#34;asd">test</option>
<option value='"asd'>test</option>
<option value='&quot;asd'>test</option>
<option value='&#34;asd'>test</option>
<option value=&quot;asd>test</option>
<option value=&#34;asd>test</option>

XML 구문을 사용하는 경우 따옴표 (싱글 또는 더블)가 필요합니다.

위의 모든 작업을 보여주는 jsfiddle이 있습니다. 있습니다.


답변

다른 옵션은 큰 따옴표를 작은 따옴표로 바꾸는 것입니다. 그러나 나는 이것을 언급하지 않습니다 :

<option value='"asd'>test</option>

나는 이것을 언급한다.

<option value="'asd">test</option>

내 경우에는이 솔루션을 사용했습니다.


답변

Javascript와 Lodash를 사용하는 경우 “, ‘, <,> 및 &를 이스케이프 처리하는 _.escape ()를 사용할 수 있습니다.

여기를 참조하십시오 : https://lodash.com/docs/#escape


답변

신뢰할 수없는 데이터는 정렬, alink, alt, bgcolor, border, cellpadding, cellspacing, class, color, cols, colspan, coords, dir, face, height, hspace, ismap, lang과 같은 좋은 속성의 화이트리스트에만 허용해야합니다. , marginheight, marginwidth, multiple, nohref, noresize, noshade, nowrap, ref, rel, rev, rows, rowspan, scrolling, shape, span, 요약, tabindex, title, usemap, valign, value, vlink, vspace, 너비

신뢰할 수없는 데이터를 자바 스크립트 핸들러와 id 또는 name 속성 (DOM의 다른 요소를 클로버 할 수 있음)에서 유지하려고합니다.

또한 신뢰할 수없는 데이터를 SRC 또는 HREF 속성에 넣는 경우 실제로 신뢰할 수없는 URL이므로 URL을 확인하고 자바 스크립트가 아닌지 확인하십시오 : URL 및 HTML 엔터티 인코딩.

https://www.owasp.org/index.php/Abridged_XSS_Prevention_Cheat_Sheet 에 대한 자세한 내용은 여기를 참조 하십시오.


답변

입력 텍스트 값에서 따옴표를 이스케이프 처리 할 수있는 방법은 없지만 javascript (또는 jquery)를 사용할 수 있습니다.

<input type="input" name="myinput" id="myinput" value="" />
<script>document.getElementById("myinput").value="This input has a [\"]";</script>