【问题标题】:Python authentication and HTTP cookie handlingPython 身份验证和 HTTP cookie 处理
【发布时间】:2015-08-17 17:25:07
【问题描述】:

我有两个关于安全问题的问题。

简介:我正在开发一个命令行客户端,它使用 Curl 与服务器(现成的产品,对服务器的代码没有影响)进行通信。服务器需要身份验证:用户名和密码(纯文本)。所有请求均使用 HTTPS 发出。

我相信使用 HTTP cookie 是一个很好的解决方案:客户端将只进行一次身份验证,并且对于另一个请求可以使用 cookie。

首先:身份验证实现。将用户密码存储在常规 python 变量中是否安全?我的意思是它可以在脚本运行时被第三方读取吗? (同一台机器上可以有很多用户,在同一个操作系统帐户上,每个用户都有一个用户名和一个密码 [用于客户端 - 服务器授权],应该保密)

其次:您对 cookie 存储有一些提示吗?加密文件或类似的东西?

我使用的是 Python 2.6。

【问题讨论】:

  • 您能否再描述一下您的架构?根据经验,当涉及到身份验证安全性时,如果我没有足够的经验,我总是会去图书馆。同样,当涉及到 cookie 处理时,当您可以使用 Django 开箱即用地解决 cookie 和身份验证这两个问题时,为什么还要自己开发它呢(我确信有包或者您可以实现您的命令行通过休息界面或类似的东西)。
  • 嘿,zom-pro!当然可以,但是我正在开发一个没有 Web(通常来说是图形)界面的 CLI 工具。我的请求与 REST 一起使用。您想了解有关建筑的哪些细节?

标签: python security authentication curl cookies


【解决方案1】:

你的假设是正确的。只要用户无法访问彼此的主目录,就没有必要进一步隐藏 cookie。您的设计是安全的。此外,由于您正在开发 CL 工具,因此您可以简单地使用包含身份验证信息的类似 netrc 的配置文件(它可能是 .netrc 本身),而无需考虑 cookie 管理。

编辑许多用户可以访问一个帐户:

我会考虑改变这一点。但是,在您的限制范围内,我建议您创建一种登录和注销机制,该机制生成并返回仅对一个会话有效的身份验证令牌。

appname login

CLI 会提示输入用户名和密码。如果后者是有效的,服务器会回复一个对一个会话有效的字母数字序列。客户端会将其保存在一个临时文件中并用于后续使用。

appname use

最后,

appname logout

这将使令牌无效并删除文件。

【讨论】:

  • 感谢您的回答!在我的例子中,用户可以访问同一个操作系统帐户,但在访问服务器资源的意义上,他们拥有不同的帐户。
  • 本·贝鲁特,你是对的。但是,我的客户不维护会话。如果您想提出请求 - 您的第一个会话以服务器应答结束(我知道这很奇怪,但在我的情况下这是必须的 - 服务器 REST API)。另一个请求是另一个会话......而且,如何存储令牌?它可以是一个http cookie吗?应该加密吗?
  • 我不明白这些限制。是客户端还是服务端不能修改?
  • 我无法修改服务器
猜你喜欢
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2021-09-15
相关资源
最近更新 更多