Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当https不可用时保护登录_Php_Security_Login - Fatal编程技术网

Php 当https不可用时保护登录

Php 当https不可用时保护登录,php,security,login,Php,Security,Login,我正在为一个web应用程序实现一个简单的登录系统,其中不处理或存储任何关键或私有信息,我希望为登录数据传输提供窃听保护 我已经在运行apache的https模块,但有时由于端口访问限制和其他一些问题而无法选择 为了避免事情过于复杂,并且在这些情况下仍能提供合理的良好保护,以下是我对快速廉价协议的想法,我的大问题是,如果(以及为什么,如果你愿意的话)做这种变通方法是好是坏: 在登录表单上,客户机接收2个随机长度(不太短也不太长)的文本字符串(服务器生成并保持$会话变量只进行一次检查)以及服务器的公

我正在为一个web应用程序实现一个简单的登录系统,其中不处理或存储任何关键或私有信息,我希望为登录数据传输提供窃听保护

我已经在运行apache的https模块,但有时由于端口访问限制和其他一些问题而无法选择

为了避免事情过于复杂,并且在这些情况下仍能提供合理的良好保护,以下是我对快速廉价协议的想法,我的大问题是,如果(以及为什么,如果你愿意的话)做这种变通方法是好是坏:

  • 在登录表单上,客户机接收2个随机长度(不太短也不太长)的文本字符串(服务器生成并保持$会话变量只进行一次检查)以及服务器的公共gpg密钥

  • User+string1和pass+string2是在发送到服务器之前使用服务器公钥编码的javascript gpg

  • 服务器恢复传输的登录信息,gpg使用私钥解密并删除字符串,散列密码,检查是否为该用户存储了匹配项,返回登录错误/使用该用户的配置文件授予对应用程序的访问权限,直到会话结束

  • 我知道这只保护登录信息(而不是防止任何中间人伪造服务器的攻击,如果我需要的话,我会简单地强制使用https),结合一些基本的sessionid防盗技术,应该可以防止被动窃听者使用偷来的凭证访问系统,如果我是对的


    我应该实现这一点还是浪费时间和资源?

    当您在几毫秒后泄漏真正的身份验证令牌(会话id)时,保护登录是毫无意义的。会话id在其整个生命周期内都必须使用HTTPS进行保护,在任何时候都不能通过纯文本传输此值,否则您将明显违反HTTPS

    攻击者就像:
    “Oah nice您为我验证了该会话,我将只接受该cookie值并作为该用户进行验证,谢谢!”

    另一方面,登录错误消息不会指定用户是否存在,而且我有一个密码恢复系统和一个注册表,在那里我尽量不以同样的方式披露任何现有帐户信息,而且所有的东西(包括在同一ip的高频率失败时登录)都有captcha保护。为什么不简单地解决导致HTTPS无法工作的问题呢?当然,但当客户端访问HTTPS端口被阻止时,我不知道如何解决这个问题,而且我有这样一句话“您的证书不是由受信任的机构颁发/签署的”包含防病毒警告的问题我必须修复…我知道,但我发现的另一个廉价解决方法是更改每个请求的cookie值,因此很难保留被盗会话,不是吗?@elcodedocle这绝不是解决此问题的方法。客户端加载的HTML/JS可能会受到攻击者的影响。你需要一个安全的传输层,句号。好的,三分之三的人说它不是解决方案,然后说它不是解决方案。谢谢大家,伙计们!