2016-08-22 3 views
4

이것은 자바 스크립트 alert()에서 출력해야하는 문자열의 예입니다. 이 문자열 내 사용자가 PHP를 통해 편집 할 수 있기 때문에큰 따옴표가있는 문자열이 포함 된 PHP 및 자바 스크립트 경고

string with "double quote" in it

는 XSS 공격을 방지하는 것이 좋습니다. 내 문서의 HTML에서 이렇게하려면 나는 보통 수행 위대한 작품을

<?php echo(htmlspecialchars($MY_STRING, ENT_QUOTES, 'UTF-8')); ?> 

합니다.

는하지만 지금은 눈치가 I 출력 자바 스크립트 경고에 동일한 문자열의 경우 :이 경우에 경고의 출력은

<script> 
alert("<?php echo(htmlspecialchars($MY_STRING, ENT_QUOTES, 'UTF-8')); ?>"); 
</script> 

입니다

:

string with &quot;double quote&quot; in it

는 무엇입니까 경고에 큰 따옴표를 출력하는 가장 좋은 방법은 XSS 주사를 방지하는 것입니다.

+2

'addslashes (strip_tags (...)) * 작업을 수행해야합니다'* ... – CD001

+0

당신은 수를 경고하기 전에 div에 넣으십시오. http : // stackoverfl ow.com/a/14937257/1921862 – Fels

답변

3

ENT_NOQUOTES 플래그는 모든 따옴표를 '보장'탈출되지 않고 addslashes은 JS 경보 기능을 위해 그들을 탈출

$string = 'string<< with "double quote" in it'; 
echo htmlentities(addslashes($string), ENT_NOQUOTES); 

출력 :.

string&lt;&lt; with \"double quote\" in it 

당신의 따옴표를 유지하고 악의적 인 HTML 태그를 탈출

+0

읽을 수없는 결과물입니다. 저자는 아마도 다음과 같이 원합니다. "double quote"를 사용하여 출력으로 : –

+0

@FranklinRivero 그런데 문자열이 다음과 같지 않으면'addslashes''의'addslashes'' 대신'''addcslashes'''를 사용합니다 : – iyop45

0
alert("<?php echo(addslashes($MY_STRING)); ?>"); 

사용 addslashes() rahter보다 htmlspecialchars() 또는 둘 다 결합하십시오. 희망이 도움이됩니다. 경고 내부

addslashes()http://php.net/manual/en/function.addslashes.php

0

모든 문자열처럼 취급되어 실행되지 않습니다, 그래서 당신은 그냥이 singlestring 확실 할 경우, 당신은 단지 "

을 탈출하여 XSS 공격을받지 않습니다 당신은 반드시 htmlspecialchars를 사용할 필요가 없습니다 경고에 대한

, 당신은 다음과 같이 그것을 바로 할 수 있습니다

<script> 
    alert("<?php echo addslashes($MY_STRING); ?>"); 
</script> 
+2

:) – CD001

+0

작동합니까, XSS가 없으면 투표를하지 않습니까? –

+0

내 downvote : \ – CD001

관련 문제