我正在尝试在华为路由器(HG150-U)上使用cURL和PHP登录,我有凭据。 显然,当您从浏览器登录时,将创建3个cookie。 其中两个是登录名的用户名和密码,但是第三个具有SESSIONID的名称,对于我搜索的更多内容,我找不到它的生成位置。
注意:似乎cookie是在发送请求时生成的。
查询看起来像这样
答案 0 :(得分:1)
会话ID不可预测,这就是重点。 (好吧,这不是应有的,但是它很短。)因此,请不要自己创建cookie。而是在curl选项中设置一个CURLOPT_COOKIEJAR,将其指向一个临时文件,然后通过传递用户名/密码来访问登录页面,它将在jar文件中创建cookie。然后,使用CURLOPT_COOKIEFILE中的该文件向所需的数据页进行第二次curl请求,curl将传递从上次匹配创建并存储在jar中的cookie。像这样:
// 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);
答案 1 :(得分:-1)
互联网的第一条规则:密码应进行哈希处理。而且它们不应该存储在Cookie中。
如果您的数据库被黑客入侵,那么所有密码都在那里,每个人都可以看到。
您想要做的是对这些密码进行哈希处理。有很多“单向”散列算法会将密码散列到无法解密的状态(除非您想连续多年强制使用它)
PHP具有password_hash()
函数,该函数使用BCrypt哈希算法,并且将确保这些密码的安全。
文档:http://php.net/manual/en/function.password-hash.php
此外,除非您要建立会话ID身份验证系统,否则请勿在cookie中存储任何用户信息。将这类内容存储在会话中。
https://www.w3schools.com/pHp/php_sessions.asp
祝你好运!