• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php - 在客户端使用 openssl_encrypt 加密用户名和密码?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:49:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我为 PHP 网站制作 API,我需要以加密形式发送登录名和用户密码。我选择了以下方法解密:

$decrypted = openssl_decrypt($user_login, 'bf-ecb', $client_id);

其中 $user_login 是一个类似于 'login:password' 的字符串。 $client_id 知道我的站点和客户端应用程序。客户端很可能是 iPhone 上的应用程序。我选择的加密算法是正常的吗,客户端用户名和密码的编码不会有问题吗?



Best Answer-推荐答案


Are normal encryption algorithm I chose, and will not be any problems on the client side with the encoding of user name and password?

您可能需要使用 WebCrypto 之类的内容确保客户端可以使用接受和实现的加密算法。您可能需要 polyfill它。

从更大的角度来看,您有两个问题需要解决。首先是网络安全模型。在 Web 安全模型中,拦截是一个有效的用例。二是违反服务器安全和密码列表。


拦截

第一个问题是由于 W3C 的理念造成的,对于 splinter 的愿景,您无能为力。 Web 安全模型的基本缺陷在 Public Key Pinning with Overrides 中变得非常清晰。 .覆盖适应了拦截,网络人努力淡化和掩盖这种行为。

您的直接防御是像您正在做的那样设置额外的安全控制。也就是说,使用加密使入侵者无法使用用户名和纯文本密码。 WebCrypto应该可以帮助你,所以你不需要 polyfill它。

但有一个潜在的问题。拦截器可以允许加密的用户名和密码通过,然后在返回给客户端时捕获cookie或 token 。所以你也需要保护 cookie。

并且需要保护用户名、密码和 cookie 免受重放攻击。您不希望攻击者获取加密的用户名和密码,然后在稍后重放它以获得经过身份验证的 session 。所以听起来它也需要盐或随机数。


数据泄露

第二个问题可以通过遵循服务器端密码存储的最佳实践来解决。为此,请参阅 OWASP 的 Password Storage Cheat SheetSecure Password Storage Threat Model

关于php - 在客户端使用 openssl_encrypt 加密用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36410039/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap