2012-01-29 3 views
0

나는 웹 사이트를 개발하고 있지만, 내 웹 사이트에서 나가는 링크를 감지하고 링크를 금지하거나, 받아 들일 필요가있는 곳에서 붙어있다. 페이스 북에서 어떻게하는지 모르지만, facebook.com/l.php를 통해 링크를 스팸으로 표시하면 사용자에게 알림이 전송됩니다.나가는 링크 (아파치, PHP ..)를 감지하는 방법

PHP 나 htaccess인지는 모르지만 DOMDOCUMENT를 사용하여 PHP에서 작동하지만 실제 솔루션이 아닙니다.

답변

0

페이스 북에서 어떻게 구현하고 있는지 확실하지 않지만 JQuery (또는 다른 자바 스크립트 라이브러리)를 사용하여 유효성 검사중인 PHP 스크립트 (예 : Facebook의 l.php 스크립트)로 모든 외부 링크를 다시 작성하는 것이 좋습니다. , 원하는 URL이 GET 매개 변수로 전달되는 경우. 그런 다음 변수 $_GET['url']에 따라 yourscript.php에서 데이터베이스 조회를 수행하고 해당 URL로 리디렉션이 안전 경우 또는 메시지의 경우를 표시 할 수 있습니다

$('a[href]').each(function(){ 
    var safe_href = 'http://yourdomain.com/yourscript.php?url='+$(this).attr('href'); 
    $(this).attr('href', safe_href); 
}); 

: 같은 jQuery를 사용하여

, 그것은 보일 수 있습니다 그렇지 않습니다.

1

이것은 Apache 또는 .htaccess 레벨에서 해결 한 것이 아닙니다. 기본적으로 링크를 출력 할 때마다 링크가 외부인지 확인하고, 링크가있는 경우 리디렉터로 대상을 변경하십시오.

그러면 리디렉터는 전달 된 URL을 확인할 수 있으며 악성으로 표시되면 메시지를 표시 할 수 있으며 그렇지 않은 경우 자동으로 리디렉션되거나 사용자가 웹 사이트.

+0

나는 링크를 검사 해 보았고, preg_match를 사용하여 출력하기 전에 나가는 링크를 감지 할 수 있었다. 그러나 나는 그 (것)들을 감지하고 ** 바꿀 수있는 방법을 찾지 못했다. 나는 ** 정규 표현식을 사용하는 전문가가 아니었다. – Emad

+0

@Emad : 나는 그들을 대체하기 위해 정규식을 사용하지 않을 것이다. 일단 링크가 외부에 있음을 감지하면'$ url = "/ r? u ="같은 것을하십시오. rawlelencode ($ url);'(여기서'/ r'는 리디렉터의 URL 임) – icktoofay

0

l.php$_GET['u']을 통해 링크를 읽는 스크립트입니다. 손에있는 URL을 사용하여 클라이언트를 리디렉션 할 위치를 결정합니다.

그래서 사용자는 스팸이 무엇이고 무엇이 아닌지 응용 프로그램을 가르치기를 원합니다. 이를 위해서는 URL 옆에있는 "스팸보고"버튼이 필요합니다.

+0

내 질문은 내가 원하는 방식으로 처리 할 수있는 모든 링크를 잡는 한 이것의 한 걸음이지만 도달 할 수 없습니다. 이 링크는 href = "x"대신에 href가 아닌 한 링크를 통해 페이지를 떠나기 전에 잡을 수 없습니다. = "l.php? to = x"나는 정말로 원하지 않습니다. 나는 클라이언트 측 뒤에 일어나는 것을 싶다. – Emad

관련 문제