【问题标题】:verify a website by uploading a file can be spoofed?通过上传文件来验证网站是否可以被欺骗?
【发布时间】:2014-12-16 13:40:55
【问题描述】:

在我的网站中,我有一个基于文件的网站验证过程

用户必须在其根目录中上传一个空文件,文件名如下:

site-verification-$user_id.html

然后我的脚本使用 php get_headers() 函数来检查这个文件是否存在,例如:

$headers = get_headers( "$user_website/site-verification-$user_id.html" );
if( preg_match( "|200|", $headers[0] ) { // ... website verified

一切正常,但我的问题是,这个过程可以被欺骗吗?

【问题讨论】:

    标签: php security web verify get-headers


    【解决方案1】:

    是的,实际上很容易欺骗这种机制。您只需要设置一个网络服务器来捕获 所有 请求(例如,通过 Apache 的 mod_rewrite 配置)并使用包括 HTTP-Status-Code 200 在内的有效响应来回答每个请求 - 漂亮易于设置。

    如果您的网络服务器的 User-Agent 和/或 IP 已知,那么它甚至可以专门针对您的服务器撒谎,同时保持对所有其他访问者的正确响应。

    为确保不会发生这种情况,您应该为用户提供一个随机生成的密钥,然后将其作为命名文件的内容。然后,您应该将文件名和密钥保存在数据库中并检查两者的合规性(类似于您如何处理用户名和密码的组合)。

    此方法类似于 e.g.您如何在Google Webmaster Tools 上验证为域的所有者。您可以确定只有有权访问服务器的人才能将此代码存入指定地址。

    请记住,“有权访问服务器的人”可能仍然是没有合法访问权限的人。此外,在您自己的服务器和您正在检查的服务器之间执行 MITM 攻击的攻击者可能会发回欺骗您的服务器所需的任何内容。好吧,但不管怎样,一切都会丢失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多