How to make user/pass secure in php scripts?
我的申请是一个网上购买的网站。i(php服务器)将收集客户端的请求并将其发送到处理网关。网关不能直接与客户机通信,它要求我的身份验证详细信息与我进行通信。因为客户端需要在联机时从网关获得即时响应,所以我必须将我的身份验证详细信息放在服务器端的PHP脚本中。我知道那不安全。那么我怎样才能保证安全呢?
谢谢!
- 为什么不安全?
- 您担心有人可以访问服务器吗?
- 通常是一个会话函数,并且通常不会从头开始构建自己的会话,至少在PHP中是这样。你是如何处理会话的?
- 可能是php的副本:存储可解密密码的安全方法
- @佩卡:如果我没弄错的话-OP用这个证书连接到第三方服务。所以他需要以某种可恢复的形式存储它们,所以哈希不是一个答案。
- @是的,我发布的第一个链接不适用。但是新的应该
- @佩卡:我还是不明白。如果脚本可以将加密的密码解密为纯文本格式,那么黑客也可以这样做,只需重复脚本所做的相同步骤。那么利润是多少?
- @如果攻击者只获得对数据库的访问权,而不是存储密钥的位置,那么加密就提供了一点额外的安全性。这是所有人都能做的,不是吗?据我所知,没有办法使这个更安全。
- @Pekka:出于某种原因,我希望OP只有一个到远程服务的连接,并且在脚本中存储凭证。至少我是这样实现的-s
- 还有一个:stackoverflow.com/questions/4899876/…
- @Zerkms如果只涉及一组凭证,你确实是对的。
- 是的,@zerkms让我明白了,网关必须接收纯文本用户/通行证来验证我的身份。但我的用户/通行证不能被客户等其他人看到。我不能指望网关解密消息。但即使我把加密的用户/密码存储在脚本中,如果有人入侵服务器,他们仍然可以解密它们,基本上他们可以改变一切…
由于您的脚本必须能够获得支付网关的用户名/密码,无论您如何"安全"地存储它们,在某些时候,它们将以原始的未加密形式公开,即使只在内存中。
问题归根结底是你想花多少时间和精力来"保护"用户/通行证,而不是在妥协后花多少钱来清理。假设您花费2000美元的时间/精力来保护您的站点。这项努力得到了无人闯入的回报。然而,在一次闯入之后,它只会花费你100美元的罚款,所以你的净损失是1900美元。
实现这一点的一个基本方法是将auth详细信息放入一个文件,可能是init.inc,并将该文件放在web根目录之外。所以你可能
1 2 3 4 5 6 7 8
| - \site_directory\
- \secure_include\
- init.inc
- \siteroot\
- \css\
- \includes\
- \images\
- login.php |
这样至少在Apache+PHP解析器出现问题时,纯文本文件在Web浏览器中是不可查看的。
- 是的,这是我能想到的方法之一。但是我担心如果有人入侵服务器,他们无论如何都能找到它。所以通常情况下,我不会将这些信息放到服务器上。