我的网站是使用php文件构建的。我在这些文件中使用商业秘密算法,我的数据库的root密码也存储在这些php文件中。我的数据库用于存储许多客户的私人医疗数据。
这被认为是安全的设置;任何人都可以从我的网络服务器下载php源码,因此可以访问我的root mysql密码吗?
我在ubuntu 8.04和mysql 5上运行apache 2.0和php 5.
谢谢。答案 0 :(得分:6)
您的服务器与服务器中最薄弱的一样安全。
如果有人为恰好能够读取该文件的帐户泄露弱密码 - 那么是的,现在他们拥有您的root密码。如果你碰巧在你的代码中犯了错误(或者使用别人的代码/程序带有这样的错误/“功能”),那么这也可能会让他们妥协 - 是的,这两种情况都会发生和发生。
因此,作为基本的预防措施,请为该应用程序创建一个特定帐户,该帐户仅限于该应用程序可以访问的内容。如果确实受到了损害,那就不那么有用了。
当然,root密码是您可以选择的最糟糕的事情。在安全审计中,保证这是即时失败。
答案 1 :(得分:6)
如果您要在美国存储医疗数据,您必须遵守特定的严格security requirements。其他国家可能有类似的规定。
如果不是专家,我会严重怀疑您是否会通过您描述的设置通过安全审核。首先,在纯文本的任何地方使用root密码是不好的做法。以未加密的形式存储任何敏感数据(例如医疗记录)会邀请任何可以穿透您网站的黑客来帮助自己处理数据。我怀疑HIPAA对确保所有医疗信息和患者识别信息的具体要求。
这是一个严重的问题,可能会使您的公司承担严重的责任。
答案 2 :(得分:3)
关于
是的,这可能是你的PHP 来源被“泄露”(交付为 它是的文本,而不是 执行)如果你的网络服务器不知何故 得到了错误的配置。
一个很好的预防措施是将所有 PHP文件(bootstrap / index文件除外)放在public_html / htdocs / www或者任何目录之外。
你可以使用像ZendGuard这样的东西
您可以简单地决定将敏感数据编译为PHP扩展(基本上只是常量)。
请记住,没有100%的保护。
答案 3 :(得分:1)
是的,如果您的网络服务器以某种方式配置错误,您的php源可能会被“泄露”(以文本形式提供,而不是执行)。
由于某些Web服务器混乱而导致代码泄漏导致php页面被传递而不是执行happened to facebook in 2007。
答案 4 :(得分:0)
出于好奇,你熟悉Google Health吗?
答案 5 :(得分:0)
如果您是受保护的商标信息,那么您最好的选择是加密它以及您存储的任何密码。
这将确保即使有人闯入您的系统,他们也无法接触到它。
您可以执行以下两项操作之一,一种是使用受密码保护的特殊页面,您可以在其中粘贴具有加密对称密钥的公钥/私钥对的私钥。
这将确保除非您拥有正确的私钥,否则您将无法访问对称密钥。
私钥可以存储在usb thumbdrive上,因此您可以在将其粘贴到特殊网页后将其删除。
完成此表单后,将立即读取对称密钥,并将其存储在全局变量中,以便应用程序中的任何页面都可以使用它。
私钥在用于限制写入硬盘驱动器的机会后会立即被清除。
这个系统并不完美,但应该能够通过安全审核并保护您的信息免受黑客成功攻击。
答案 6 :(得分:0)
为每个应用程序创建mysql用户,并为该用户提供正常工作所需的最少权限。大多数应用程序只需要选择,更新和删除。 http://en.wikipedia.org/wiki/Principle_of_least_privilege
您的mysql root用户具有超级用户的特殊权限。假设您达到了最大连接限制。 MySQL总是保留超级用户的最后一个连接,这样你就可以进入并管理盒子,终止连接等等。
如果您在网络应用中使用root,那么您可能会被锁定在自己的数据库之外。