【问题标题】:Using curl with PHP to authenticate - mysterious security使用 curl 和 PHP 进行身份验证 - 神秘的安全性
【发布时间】:2012-08-30 15:14:25
【问题描述】:

我正在尝试制作一个脚本,该脚本将在我每天访问的一些网站上运行,并从中获取最有趣的信息/统计数据。我想为此目的使用 curl,因为其中一些站点需要身份验证。一切都很好,直到我碰到了这个网站:rossnet.pl,它似乎是安全的,因为我根本无法验证自己的身份。

我想使用的表格可以在这里找到: https://www.rossnet.pl/rossnetlogin.aspx

在左侧,文字下方:“Mam konto w Rossnet.pl - Logowanie”。它似乎没有任何隐藏的输入字段,只有两个用于凭据的文本字段,称为: -“dnn$ctr1203$ViewLogin$txtUserLogin” - "dnn$ctr1203$ViewLogin$txtUserPass"

我正在使用下面显示的代码,但服务器返回的页面似乎完全没有发生任何事情(没有错误消息,看起来与我不发送任何 POST 数据时相同)。

有人知道可能出了什么问题吗?在下面的代码中,我输入了实际的帐户凭据,以便您能够测试脚本,如果您想帮助我。

在这里你可以看到下面的脚本是如何在我的服务器上工作的: http://kremuwa.netii.net/rossman/skrypt.php

<?php

$url = "https://www.rossnet.pl/rossnetlogin.aspx";   

$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);        
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'dnn$ctr1203$ViewLogin$txtUserLogin=warzywko3000&dnn$ctr1203$ViewLogin$txtUserPass=password123');

$output = curl_exec($ch);  

curl_close($ch);  

echo $output;

?>

【问题讨论】:

  • 我相信 cURL 正在尝试验证对等方的证书。尝试通过添加 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 禁用此功能
  • 也许您先加载页面(方法 = GET),然后发布表单。
  • @njk - 不幸的是,我不这么认为,因为在这种情况下 curl 可能应该返回一些错误消息,但它没有。第二件事是,在我发布这个问题之前,我将该选项设置为 false 并且没有任何区别。还是谢谢。
  • @Jack - 你能写更多关于你的概念的东西吗?也许一些代码或有用的链接?不一定在评论中:)。

标签: php security curl login


【解决方案1】:

登录表单有时会受到挑战的保护,这些挑战会阻止您在未先加载页面的情况下直接提交表单。我列出了一些可能会妨碍您的选项。

一个选项是 cookie 挑战,它也是最容易处理的,只需加载页面(获取 cookie)并将其与表单提交一起发送。

另一种选择是隐藏领域挑战;隐藏的表单字段填充了质询代码,并且提交也希望发送该值。

我能想到的最后一个选项是涉及 JavaScript 的更困难的方法;该页面将使用 JavaScript 加载挑战字符串,可能会对其进行一些混淆,然后将其发送(通过隐藏的表单字段或 ajax 请求)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多