2012-11-07 3 views
0

나는 redirect.php와 링크가 있으며 WORDPRESS에서는 작동하지 않습니다. 내가 내 사이트에 "안녕하세요"링크를 클릭하면mod_rewrite 외부 링크 문제 (wordpress)

내가 기대는 redirect.php로 전환, 사용자는 5 초에 대한 스피너를보고하고, 사용자가 보이는

hello.com 내 사이트를 종료 같이 뭔가가 잘못 mod_rewrite 내가 해결할 수 없습니다

정말 고맙겠습니다 매우 상세한 답변. 나는 매우 중학생이다

내가 가지고있는 것. redirect.php에서

<a href="http://redirect.php?link=hello.com">Hello</a> 

2 .-, 난이 : <a href="http://redirect.php?...가 잘못

<html> 
<head> 
    ... 
    <meta http-equiv="refresh" content="5;url=<?php echo $_GET['link'];?>" /> 
    ... 
</head> 
<body> 
    <h1>You are leaving my site!</h1> 
    <img src="/images/spinner.gif" alt="spinner" /> 
</body> 
</html> 

답변

0

링크

는 1 .- 내 홈페이지에서 외부 링크가 있습니다. 이 번호는 <a href="/redirect.php?... 또는 서버의 하위 디렉토리 일 가능성이 큽니다.

또한 링크 매개 변수에 프로토콜을 포함하거나 메타 태그 앞에 추가해야합니다. 또한 메타 태그의 링크를 HTML로 인코딩하고 링크 매개 변수에 도메인 이름을 올바르게 URL 인코딩해야합니다. 당신이 당신의 웹 사이트의 루트에있는 redirect.php 파일이있는 경우

<a href="/redirect.php?link=http%3A%2F%2Ftest.com">Hello</a> 

:

그래서,에 대한 링크를 변경합니다. 그리고에 메타 태그를 변경합니다

<meta http-equiv="refresh" content="5;url=<?php echo htmlentities($_GET['link'], ENT_QUOTES,);?>" /> 

그리고 당신은 링크 매개 변수의 유효성에 대한 몇 가지 검증 작업을 수행 할 수 있습니다 당신은 아마도 또한 참조 URL ($_SERVER('HTTP_REFERER')) 당신이 단지에 대한 리디렉션을 수행 할 수 있도록를 확인하려면 (즉, open redirect 취약점을 생성하지 마십시오.)