좋은 URL을 변환하려면 .htaccess mod_rewrite
을 사용하고, PHP 변수 page
을 사용하면 index.php
으로 URL 부분을 보냅니다. 나머지 처리가 완료됩니다.PHP는 질의 문자열을 통해 전달 된 변수를 막지 만 동일한 변수가 아파치를 통해 전달되도록 허용합니다. mod_rewrite
RewriteRule ^([a-zA-Z0-9-_/]+)$ index.php?page=$1 [QSA,L]
이제 일부 악의적 인 사용자가 쿼리 문자열을 통해 page
변수를 전달하면 받아 들여집니다. 예를 들어 login
페이지를로드하는 대신 사용자가 http://mysite.com/login?page=registration
을 호출하면 사용자 지정 페이지 registration
이로드됩니다.
htaccess
파일에서 문제를 해결하는 방법을 알려주세요.
mod 재 작성에서'QSA' 만 제거하면 전달 된 모든 쿼리 문자열을 무시합니다 ... http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa –
여전히 필요합니다. 다른 쿼리가 전달되면 쿼리 문자열의 page = ''부분을 무시하기 만하면됩니다. QSA를 끄지 못한다. – giga
요청한 실제 페이지를 찾기 위해'$ _SERVER [ 'REQUEST_URI']'를 읽지 않는 이유는 무엇입니까? "악의적 인 사용자"는 코드를 이미 서버에서 실행하지 않는 한 이렇게 혼란 스러울 수 없습니다. – LazyOne