使用PHP自动登录+;卷曲

使用PHP自动登录+;卷曲,php,curl,Php,Curl,我正在尝试使用cURL和PHP在华为路由器(HG150-U)上登录,我有证书。 显然,当您从浏览器登录时,会创建3个cookie。 其中两个是登录名的用户名和密码,但第三个名为SESSIONID,我搜索了更多信息,无法找到它的生成位置 注意:cookie似乎是在发送请求时生成的 查询如下所示 互联网的第一条规则:密码应该散列。它们不应该储存在饼干里 如果你的数据库遭到黑客攻击,那么所有的密码都在那里,每个人都可以看到 你要做的是散列这些密码。有很多“单向”散列算法,可以将密码散列到无法解密的状态

我正在尝试使用cURL和PHP在华为路由器(HG150-U)上登录,我有证书。 显然,当您从浏览器登录时,会创建3个cookie。 其中两个是登录名的用户名和密码,但第三个名为SESSIONID,我搜索了更多信息,无法找到它的生成位置

注意:cookie似乎是在发送请求时生成的

查询如下所示
互联网的第一条规则:密码应该散列。它们不应该储存在饼干里

如果你的数据库遭到黑客攻击,那么所有的密码都在那里,每个人都可以看到

你要做的是散列这些密码。有很多“单向”散列算法,可以将密码散列到无法解密的状态(除非你想连续多年强行破解密码)

PHP有一个函数,
password\u hash()
,它使用BCrypt哈希算法,并将确保这些密码的安全

文件:

另外,除非您正在创建会话ID身份验证系统,否则不要在cookie中存储任何用户信息。在会话中存储此类内容


祝你好运

会话ID是不可预测的,这就是重点。(好吧,它不应该是,但它很短。)所以,不要自己创建cookies。相反,在curl选项中设置一个CURLOPT_COOKIEJAR,将其指向一个临时文件,然后通过传递user/pass点击登录页面,它将在jar文件中创建cookie。然后使用CURLOPT_COOKIEFILE中的文件向所需的数据页发出第二个curl请求,curl将传递上次点击创建并存储在jar中的cookies。大概是这样的:

// Send user/password to the login page so that we get new cookies.
$curl = curl_init('<whatever the login page url is>');
curl_setopt($curl, CURLOPT_COOKIEJAR, '/tmp/cookies'); // cookies get stored in this file
curl_setopt($curl, CURLOPT_POSTFIELDS, [
    '<username field>' => '<username>',
    '<password field>' => '<password>',
]);
curl_setopt(...);
curl_exec($curl);
curl_close($curl);

// Send the cookies we just saved to the data page you want
$curl = curl_init('<whatever the data page url is>');
curl_setopt($curl, CURLOPT_COOKIEFILE, '/tmp/cookies'); // cookies in this file get sent
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt(...);
$page = curl_exec($curl);
//将用户/密码发送到登录页面,以便获得新的cookie。
$curl=curl_init(“”);
curl_setopt($curl,CURLOPT_COOKIEJAR,/tmp/cookies');//cookies存储在此文件中
curl_setopt($curl,CURLOPT_POSTFIELDS[
'' => '',
'' => '',
]);
旋度设置选项(…);
curl_exec($curl);
curl_close($curl);
//将我们刚刚保存的cookies发送到您想要的数据页
$curl=curl_init(“”);
curl_setopt($curl,CURLOPT_COOKIEFILE,'/tmp/cookies');//将发送此文件中的Cookie
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
旋度设置选项(…);
$page=curl\u exec($curl);

它存储密码。。。在饼干里。。。纯文本?我有这个代码,它可以工作:$ch=curl_init()$url=“190.214.78.190/cgi-bin/home\u wireless.asp”;curl_setopt($ch,CURLOPT_URL,$URL);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIE,“SESSIONID=6cb6816c;uid=usuario;psw=usuario”);卷曲设置($ch,卷曲设置,3);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_CIPHER_LIST,'TLSv1')$数据=curl_exec($ch)///但是为了发现会话ID是什么,我必须使用浏览器登录并复制它。@RonaldNavarrete你的问题。我想你误解了OP的情况。他们还没有编写创建cookies的代码,这些cookies来自路由器。他们在问如何通过脚本而不是浏览器登录。加密在这里不是正确的术语,你的意思是哈希。散列和加密是不同的事情。谢谢你纠正我。我会编辑这篇文章@MartyI仍然无法登录。它不断重定向我登录。cookie是否正确保存在cookie文件中?我没有将它们保存在任何文件中,这是我的错误。