【问题标题】:What should I do to protect user information as non-company? [closed]作为非公司,我应该如何保护用户信息? [关闭]
【发布时间】:2013-12-20 16:59:07
【问题描述】:

我只是一个开发人员,他在一个便宜(但很好)的标准虚拟主机上亲自开发一些网站(在捐赠的基础上)。我还在大学学习计算机科学,所以我肯定关心安全性。

所以我有一个网站,用户可以在其中创建帐户并将它们存储在数据库中,并且我希望它尽可能尽可能安全,而无需在安全性上花钱。该服务器只是在 Apache Web 服务器上运行 PHP 和 MySQL 数据库。

我知道自己能够做到的做法:

  • 使用复杂的数据库用户名和密码。
  • 将密码与散列算法(最好是not MD5)和盐一起存储。
  • 同样重要的是,使用复杂的 FTP 用户名和密码。

我知道存在的可能缺陷:

  • 数据库可以通过互联网“访问”,即www.host.tld/phpMyAdmin,但它仍然需要用户名和密码作为输入。我确实可以访问 .htaccess 文件。
  • 如果有人入侵了数据库,他们可以获得有价值的信息,即电子邮件地址。

我还能做些什么,尽我所能?

【问题讨论】:

  • 一个非常好的资源是 Troy Hunts Hack Yourself First
  • 刚读完《Hack Yourself First》,真的很有趣

标签: php mysql sql web


【解决方案1】:

对于 PHPMyAdmin

  1. 更改默认管理员用户
  2. 使用 .htaccess 锁定 PHPMyAdmin 的访问页面
  3. 不要调用文件夹 PHPMyAdmin
  4. 在 Apache 中使用虚拟目录设置来防止浏览目录,或在所有文件夹中使用虚拟 index.php

MySQL 安全性

为了 MySQL 的安全性,创建一个具有最低安全权限的新数据库用户,以使您的应用程序能够正常工作 - 如果您的 PHP 脚本包含在内,则可以控制损坏。

PHP

跨站点脚本和 MySQL 注入仍然是常见问题 - 有各种 PHP 库(免费!)有助于清理输入。

如果您确实允许用户上传,请将这些文件夹的权限设置为 755,并确保 PHP 可以读取此类文件夹 - 一些 Web 主机坚持文件夹在 PHP 可以写入之前拥有 777 权限。不惜一切代价避免此类主机。

如果您真的想更进一步,您可以加密敏感信息作为一种威慑,尽管攻击者可能有全世界的时间来破解这些信息。

考虑使用 PHP 框架来完成基本安全工作,例如对 POST、GET 等进行清理。

【讨论】:

  • 我刚刚意识到我的虚拟主机配置很有趣。正确配置了直接数据库访问(端口 3306),最初只允许 localhost,但后来它们开始允许任何人连接到 hostname.tld/phpMyAdmin
【解决方案2】:

确实,通过 Internet 向所有人公开您的 PHPMyadmin 登录页面是一种非常糟糕的做法。据我所知,PHPmyadmin 没有提供任何机制来防止暴力攻击。简单来说,蛮力攻击是攻击者试图猜测数据库密码的攻击。而且,无论您如何添加密码,都可能有人通过它。

我建议您立即限制对数据库的访问,以便只有授权用户才能访问它。您可以通过篡改一些配置文件轻松做到这一点。这个答案可能会对你有所帮助。 How to restrict access to phpmyadmin?

希望您的数据库能够免受恶意攻击:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    相关资源
    最近更新 更多