PHP安全会话

hal*_*dan 6 php session blowfish

我正在创建一个类似于phpmyadmin(数据库管理UI)的应用程序.用户需要针对数据库进行身份验证,并且应用程序需要以某种方式存储凭据.SSL不是所有安装的选项.

  • 想法1:用户使用预定义的blowfish密钥(config.ini.php)发送凭证,应用程序存储用户名和加密密码 - 这就是phpMyAdmin所做的.
  • 想法2:登录表单创建随机的blowfish secret(javascript),用户发送登录凭据,应用程序加密用户/密码并将它们存储在会话中,密钥存储到cookie中并发送给每个请求.

想法1:如果违反服务器安全性则出现问题.(关键是配置,/ tmp中的会话数据)
想法2:中间人攻击的问题.(密钥+凭证已发送)

还有其他建议吗?批评?

Sau*_*aul 5

你说的问题在绝对意义上是无法解决的.没有服务器是100%安全的,每一次"中间人"攻击都可以更进一步.

我建议更具体地定义服务器安全性要求.否则每个解决方案都会显得缺乏,因为从绝对意义上说它们总是如此 例如,如果"/ tmp"让您担心,请使用session_save_path()并将会话数据放在其他位置.

当谈到挫败"人在中间人"攻击,那么尤伯杯的方法是使用一次一个密,预共享脱机.这就是安全机构做的-所有其他选项离开你的应用程序或多或少依赖于你的服务器和用户代理之间的设备的仁.所以你需要决定你的耐受程度.

一种合理安全的认证方法是零知识证明.它要求您的应用程序只知道用户的公钥.没有密码,没有秘密.关键是当用户想要登录时,您的应用程序应该使用该用户的公钥加密的随机消息进行响应.如果另一方发回正确的随机消息,则表示拥有匹配的私钥.因此,用户被认证.为了防止窃听,在发送回复之前,让用户使用应用程序的公钥加密正确的答案.但是,为所有这些实现必要的功能和适当的GUI将不是一项微不足道的任务.