首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL应用程序用户和凭据应该在应用程序或db上运行吗?

MySQL应用程序用户和凭据应该在应用程序或db上运行吗?
EN

Stack Overflow用户
提问于 2018-09-03 23:11:00
回答 1查看 235关注 0票数 0

我们正在创建PHP/MySQL web应用程序。

一方面:

我的PHP开发人员相信,创建一个具有用户/密码/权限的表,可以授予或拒绝对最终应用程序某些部分的访问。

在等式的另一边,我的DB专家希望直接使用数据库来创建用户/密码/权限。

对于DB选项,我认为我们需要在MySQL前面创建一个单独的web服务,这样才能工作吗?还是让用户直接访问数据库?

怎样才是最好的方法呢?像Dupral或Joomla这样的/mysql应用程序是如何工作的呢?

是的,这是一个关于设计最佳实践的问题,但我需要找到PHP/MySQL开发的最佳实践。MySQL应该管理web用户,或者仅仅管理一个DB用户,其余的则在应用程序级别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-03 23:30:03

与PHP路由一起使用。

无论您是通过PHP创建登录,还是直接通过MySQL创建登录,它们都将最终进入您的MySQL数据库。不过,这两种方法之间有一些不同。要点是,如果您使用PHP路径,您的用户将能够自己创建他们的登录(这意味着自己选择他们的密码)。如果您使用数据库路由,您的用户将不得不为他们分配密码。

在MySQL中,可以使用类似于SHA()的东西来安全地散列密码(使用salt),但据我所知,您无法在MySQL中选择更安全的加密算法。SHA-256 / SHA-512几乎可以肯定地满足您的需要,尽管您可能需要一些更安全的东西。

使用PHP,您可以访问像password_hash()password_verify()这样的方法,这些方法可以与PASSWORD_BCRYPTPASSWORD_ARGON2I等算法一起使用(这比标准的SHA-256或SHA-512安全得多)。

最后,您必须考虑在数据库被破坏时应该发生什么(每天大约有30,000次)。如前所述,无论是哪种情况,加密密码都存储在数据库中。如果您通过MySQL创建登录,很可能还会公开加密的方法(可能还有使用的盐类)。如果您通过PHP构建登录,攻击者将需要完整的shell访问您的网站,以便能够计算出您如何加密您的密码。

最重要的是,从不允许用户访问数据库。实际上,我建议确保主数据库用户角色只具有与数据交互的required privileges (可能是SELECTINSERTUPDATE),并使用具有CREATE权限的单独用户来创建用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52156987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档