在Cookie

时间:2018-03-16 00:25:33

标签: apache curl

我已在我的网络服务器上启用了基本身份验证,并希望每天只让用户输入一次密码。第一次成功登录后,我可以将身份验证保存在cookie中。 Q1。我该如何工作? Q2。这是最好的安全选择吗? (该网站不接触互联网)

我想使用libcurl访问该网站,所以我正在使用curl进行测试。

以下是我的尝试:
安装和配置
下载httpd二进制文件并在c:\ install \ apache24

中解压缩

在httpd.conf

中设置服务器主页
Define SRVROOT "c:/install/Apache24"

生成密码文件并将其放在c:\ install \ apache24 \ passwd中 httpasswd -c密码las

htdocs中的

.htaccess

AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "C:/install/Apache24/passwd/passwords"
Require user bob

在httpd.conf

中更改为all
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
    AllowOverride All
</Directory>

将此index.html放入

<header><title>This is title</title></header>
<body>
Hello world
</body>
</html>

测试一下 在我的机器上通过解析代理服务器中的localhost 环境变量no_proxy设置为

no_proxy=localhost

在浏览器中加载localhost,它会要求输入密码。

使用卷曲加载 curl localhost -u bob:密码 或者在不更改环境变量的情况下忽略代理 curl --noproxy&#34; *&#34; http://localhost

将身份验证保存在Cookie中,并在下次使用时使用 curl -X POST -b cookies.txt -c cookies.txt -u bob:password {http://localhost} -O&gt; output.txt的

curl -X POST -b cookies.txt -c cookies.txt {http://localhost} -O&gt; output2.txt

在文件输出中我有:

<html>
<header><title>This is title</title></header>
<body>
Hello world
</body>
</html>

在文件output2.txt中我有

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>

此外,没有cookies.txt文件

我可能会做一些愚蠢的事情而且很乐意精益求精!

1 个答案:

答案 0 :(得分:1)

如果您在Apache中使用HTTP身份验证,则无法使用cookie来绕过此问题。只要不关闭,浏览器就会保留凭据。 HTTP身份验证凭据在标头中发送,cookie不会影响是否强制执行或需要。

另请注意,使用AuthType Basic时,密码仅为base64编码,因此,如果您的站点不使用HTTPS,则密码很容易被截获,并且根本不安全。既然你说它没有连接到互联网,这可能没问题。尽管如此,使用mod_auth_digest会更好。