Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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/9/git/20.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_Ajax_Security_Encryption_Cryptography - Fatal编程技术网

Php 不使用HTTPS登录,如何确保安全?

Php 不使用HTTPS登录,如何确保安全?,php,ajax,security,encryption,cryptography,Php,Ajax,Security,Encryption,Cryptography,对于Web应用程序,当HTTPS作为安全措施不可用时,是否仍然可以使登录更加安全?例如: 标记化登录,使重复攻击变得困难 以某种方式加密从HTML密码字段发送的密码 特别是,我使用CakePHP和AJAX POST调用来触发身份验证(包括提供的用户名和密码) 有关问题的最新情况: HTTPS不可用。时期如果你不喜欢这种情况,就把它看作是一个理论问题。 没有明确的要求,你有任何HTTP,PHP和浏览器(cookies,JavaScript等)在现实生活中提供(没有神奇的RSA二进制文件,PG

对于Web应用程序,当HTTPS作为安全措施不可用时,是否仍然可以使登录更加安全?例如:

  • 标记化登录,使重复攻击变得困难
  • 以某种方式加密从HTML密码字段发送的密码
特别是,我使用CakePHP和AJAX POST调用来触发身份验证(包括提供的用户名和密码)

有关问题的最新情况:

  • HTTPS不可用。时期如果你不喜欢这种情况,就把它看作是一个理论问题。
  • 没有明确的要求,你有任何HTTP,PHP和浏览器(cookies,JavaScript等)在现实生活中提供(没有神奇的RSA二进制文件,PGP插件)
  • 问题是,在这种情况下,你能做的最好的事情是什么,这比明文发送密码要好。了解每种解决方案的缺点是一个加号
  • 欢迎任何比普通密码更好的改进。我们的目标不是100%的l33tG0Dhx0r proff解决方案。难破解比复杂的破解要好,复杂的破解比简单的嗅探泄露密码要好

您可以使用Javascript加密密码,然后在服务器上解密密码

我建议在服务器上生成一个RSA密钥对,将公钥和一个定时salt一起发送到浏览器,然后使用Javascript中的公钥对密码和salt进行加密

您可以在Javascript中找到RSA实现

您应该在身份验证cookie中包括IP地址和整个hedaer,以防止代理背后的cookie被盗

如果您正在处理敏感数据,您可以生成一个随机密码,然后将其与使用RSA加密的密码一起发送到服务器。
然后,您可以使整个应用程序使用来自单个页面的加密AJAX请求,而不使用身份验证cookie


请注意,如果没有SSL,就不可能防止主动中间人攻击。活跃的攻击者可以用自己的代理完全替换您的站点,并且没有任何方法可以对此进行防御。(因为不可能有任何已知的好代码)

HTTPS在维护网站和浏览器之间的安全连接方面绝对至关重要,如果使用正确,HTTPS是唯一可以保护用户帐户免受攻击的工具

如果您的主机不支持HTTPS,则可以使用类似的服务来确保所有浏览器使用HTTPS连接到您的站点,即使您的服务器不支持SSL/TLS。Cloudflare与您的网站之间的连接仍将不受保护,但此Cloudflare服务旨在保护用户免受公共wifi网络上发现的威胁。从渗透测试人员的角度来看,不提供HTTPS是非常可疑的,如果您在传递流量时没有提供基本的安全要求,那么您还缺少哪些其他安全要求?HTTPS证书可以免费获得,或者,没有合法理由不支持HTTPS

HTTPS非常重要,因为它不仅仅是“加密密码”。另一个重要作用是,它应该防止用户登录到模拟真实服务器的恶意服务器。单独使用系统保护密码仍然是违反的,因为您仍将以明文形式传输会话凭据,而这正是攻击者所需要的()

  • “令牌化登录”:如果攻击者正在嗅探 流量,他们将拥有纯文本用户名/密码,然后 他们可以使用这些新凭据登录。(重播攻击)

  • “以某种方式加密传输的密码”:在用户登录后 攻击者可以嗅探流量以获取有效的会话id (cookie)然后使用它而不是登录。如果 整个会话受SSL/TLS保护,因此这不是问题


  • 还有其他更复杂的攻击会影响此系统和我们当前的SSL基础设施。这次攻击更为详细。我强烈建议,这将导致。

    正如您所建议的,您可以在每次创建页面时生成唯一的令牌。同样的令牌需要和表单数据一起发送回去,并且不能重用。如果您可以依靠用户启用密码,还可以通过使用JavaScript对密码进行哈希来确保密码的安全

    然而,这个方案仍然不安全。攻击者仍然可以看到电线上的所有东西。他们可以拦截令牌并在用户之前向您发送响应。或者,他们可以等待某人登录,窃取此人的凭据(因为他们是通过网络发送的),然后在稍后发出自己的登录请求

    底线-您需要使用HTTPS来保证站点的安全。

    您可以使用身份验证,这是大多数浏览器支持的,并且不会通过网络发送密码

    缺点是broswer显示的丑陋的登录框。如果您希望坚持使用表单,那么您可以在表单authnetition中实现与HTTP摘要完全相同的协议:发送包含域和质询的隐藏字段,并让客户端在JavaScript中添加nonce并计算摘要。通过这种方式,你将使用一个众所周知且经过验证的呼气协议,而不是使用你自己的协议

    HTTP摘要只需要哈希操作。

    那怎么办?它通过在发送到服务器之前对用户名、密码和nonce(以及其他内容)进行MD5哈希来提供安全性。MD5并不是真正安全的,但它是一种使用HTTP实现简单安全性的好方法


    当然,这并不能阻止黑客更改消息。。。但是它可以保护您的密码。

    我所见过的安全HTTP连接的最佳解决方案是使用Javascript imp