기본적으로 내 생각에 내용을 예측할 수없는 문자열을 16 진수 문자열로 변환 한 다음 데이터를받는 스크립트에서 다시 읽을 수있는 문자열로 변환하면 잠재적 인 XSS 취약점도 예방할 수 있습니다. 앰퍼샌드, 물음표 등과 같은 특수 문자가 Script2.php의 실행을 엉망으로 만들지 않도록하십시오. 이게 맞습니까? 아니면 더해야합니까? Script1.php에서
: Script2.php에서
echo('<TD><A HREF="Script2.php?reason=' . bin2hex($input['reason']) . '">Proceed</A></TD>');
:
echo('<input type="text" name="reason">' . strlen($_REQUEST['reason'])?pack('H*', $_REQUEST['reason']):'<I>No reason specified</I>' . '</input>');
이진 데이터를 전송하는 것은 당연합니다.일반적인'urlencode()'와'htmlspecialchars()'마샬링은 더 이해하기 쉽습니다. 특히 script2에서 텍스트를 출력하기 때문에 html 출력을 위해 적절한 컨텍스트 이스케이프가 필요합니다. – mario
이것은 완전히 어떤 주사 취약점인지 오해합니다. 16 진수 인코딩은 보호 기능을 제공하지 않으므로'? reason = 3c7363726970743e616c657274282758535327293c2f7363726970743e'로 가서''을 결과 페이지에 삽입 할 수 있습니다. – bobince