Php 登录url中的BCrypt哈希密码
我的应用程序使用一个登录/注册系统,该系统使用BCrypt加密密码。当用户注册时,密码将使用BCrypt加密,然后存储在mysql数据库中。但是,当用户登录时,出于安全原因,我希望密码也被加密。我可以在将密码放入登录url之前对其进行加密,但是您可以比较2个哈希值,这样就不起作用了 如何在登录请求(url)中也加密密码 我没有很好地解释我的问题,所以我将尝试更详细地解释它。在应用程序中,我有一个发送url请求的脚本,例如site/login.php?username=name&password=passwordPhp 登录url中的BCrypt哈希密码,php,mysql,encryption,bcrypt,Php,Mysql,Encryption,Bcrypt,我的应用程序使用一个登录/注册系统,该系统使用BCrypt加密密码。当用户注册时,密码将使用BCrypt加密,然后存储在mysql数据库中。但是,当用户登录时,出于安全原因,我希望密码也被加密。我可以在将密码放入登录url之前对其进行加密,但是您可以比较2个哈希值,这样就不起作用了 如何在登录请求(url)中也加密密码 我没有很好地解释我的问题,所以我将尝试更详细地解释它。在应用程序中,我有一个发送url请求的脚本,例如site/login.php?username=name&password=
当我在cpanel上查看访问者的日志时,我可以读取&password字段,这样我就知道了用户的密码。这是我想阻止的事情,我想这样做,即使我在任何地方都看不到用户密码我想你在登录表单中使用“GET”方法而不是“POST”是做错了 学校: 切勿使用GET发送敏感数据!(将在URL中可见) 当您将登录详细信息发送到将检查凭据的php页面时,如果表单使用,则url中不会显示密码 编辑:考虑到评论中所说的内容,尽管它看起来更安全,而且是W3推荐的,但POST并不比GET和更安全,如下所示:
HTTPS是唯一合理的安全机制
通过HTTPS连接以帖子的形式发送密码,而不是在URL中 使用HTTPS将加密URL地址部分之外的所有内容 即使在使用HTTPS时也使用POST的原因是,许多服务器记录URL,而URL通常包括密码。显然,在服务器日志中输入密码是一种安全故障 在发送到服务器之前不要对密码进行散列,这只会使散列成为密码
在服务器上使用
BCrypt
散列密码进行存储是一种安全的方法,就像password\u hash
和password\u verify
一样,这两种方法在PHP中都很常见。为什么要在url中发送密码?“但是,当用户登录时,出于安全原因,我也希望对密码进行加密”-嗯。。。它已经散列了。哈希和加密是两种不同的动物。问题还不清楚,IMHO。他的意思是:他想加密用户在登录表单上输入的密码,然后将此密码作为URL参数发送,比如:Login.php?u=username&p=encrypted\u Password
,顺便说一句@NorthSeaDevs为什么现在要发送加密URL中的密码?您可以在同一页上处理/验证登录凭据,然后简单地重定向到另一页:如果需要的话。唯一明智的方法是使用HTTPS连接。@Poiz如果他们使用的是他们应该使用的SSL套接字,GET/POST无关紧要。这不是不使用POST的原因,有人可以嗅探POST请求,就像嗅探GET请求一样简单。不同之处在于,Web服务器不会在访问日志中记录POST请求的内容,但会记录GET请求。此外,在SSL套接字中使用GET/POST(即使是明文密码)也同样安全。@JamesHalsall谢谢,我不知道这两种请求类型都可以很容易地被嗅探到!POST中的数据不再比GETTPS中的数据更安全。HTTPS是唯一合理的安全机制