PHP/MySQL 安全问题

标签 php mysql security

我在 000webhost 上有一个 PHP/MySQL 网站(http://www.boisvert.me.uk;但目前正在审查中),我担心它的安全性。我正在尝试做的事情会使任何网站都容易受到攻击;它相当于给 children 一把锋利的剪刀。我有各种想法来最大程度地减少网站的漏洞,但欢迎提供更多建议。

特别是,有两个脚本:

  • 上传脚本。其目的是允许注册站点用户上传某些 XML 文件(教程)。显然,要做到这一点,站点上的一个文件夹会为访问者提供写入权限。我不喜欢那样,但我没有找到解决办法,我可以向脚本添加检查(类型、大小)以确保上传的文件仅限于 XML 和一些图像。还有其他我可以改进的地方吗?

  • 脚本 2 是 PHP 的解释器 - 用户可以在表单中输入 PHP,它将执行(无需保存)。我希望允许用户尝试访问数据库,因此粗略的字符串替换确保我不需要泄露 MySQL 访问信息。但攻击者可以使用此解释器获取对文件区域的访问权限并上传不受欢迎的 Material 。我的解决方案是将解释器放在一个单独的域中,不能上传任何文件。

欢迎提出任何改进建议,禁止“不要这样做”。我知道这很危险。过马路也是如此。感谢您的帮助。

最佳答案

第一点已包含在之前的答案中(并且可能在本网站的其他地方多次包含)

对于第二点,如果你觉得你必须拥有它,我会提出一些建议。您可以编译自己的 PHP 二进制文件,排除所有您不希望用户需要的选项(也许省略除 MySQL 之外的所有选项)。然后你应该创建一个 php.ini 文件来禁用任何有潜在危险的功能(为此使用 disable_functions 配置选项 - 请参阅其他答案)。将内存使用和 CPU 时间限制为合理的数字(对于您希望允许用户运行的简单脚本)。现在我们应该能够使用 system("chroot/path/to/secure/dir ./php tempfile.php"); 之类的东西在 chroot 环境中运行所有这些。/path/to/secure/dir 应该是您将用户 PHP 脚本写入临时文件的目录。它应该包含 PHP 可执行文件和安全的 php.ini 文件。这些文件和安全目录应该由运行脚本的用户(特别是 PHP 可执行文件和 php.ini 文件)以外的用户拥有,并且任何人都不可写。安全目录应该在网络根目录之外。

现在,我不会假装我已经想到了所有事情,但希望这些想法可以成为您安全环境的基础。

关于PHP/MySQL 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989130/

相关文章:

php - 我定义了 15 个类,名称为 box1、box2、box3、...box15。如何在没有逗号分隔的情况下定义类?

MySQL 删除旧记录

php - 使用 alter table 更改日期格式

具有 Apache 安全性的 SVN

python - 如何在 powershell 和 python 脚本中保护 API 身份验证详细信息

php - 电子邮件内容中单词内的随机空格

php - MySQL查找行

php - 无法让 Twitter Typeahead 在 Bootstrap 中工作

mysql - COLLATION 'utf8mb4_general_ci' 对于字符集 'binary' 无效

安全测试 - 如何测试恶意上传文件上传功能