【问题标题】:PHP Security with databases [duplicate]PHP安全与数据库[重复]
【发布时间】:2015-09-20 03:38:51
【问题描述】:

我是否需要担心我的 MySQL 连接存在任何安全问题。在我的项目中,我有一个 PHP 文件,其中包含需要在各种函数中运行的所有连接信息和语句,我使用 require once 或 ajax 语句从中获取数据。

喜欢

<?php
     require_once '../includes/game_query.php';
     game_page_query(1);
 ?>

对文件的调用会运行查询并将一些生成的 html 回显到页面上。

由于执行选择的连接信息在 PHP 文件中可见,因此是否有可能被利用/攻击?

【问题讨论】:

  • 不要将敏感文件放在你的文档根目录中,然后......如果你的服务器上的 php 被禁用/中断,这些文件很可能会以纯文本的形式提供,你会将你所有的 php 代码暴露给世界。如果文件不在文档根目录中,则最终用户根本无法访问它。
  • @MarcB 那么我对该特定安全问题的解决方案是将带有 SQL 信息的文档移到服务器上的 htdocs 文件夹之外?
  • 这取决于你。 php 通常不在乎文件在哪里。它在文件系统级别工作,几乎完全不受 apache 自己的安全系统的限制。

标签: php mysql security


【解决方案1】:

首先,确保您使用的是prepared SQL statements 或至少转义数据库参数。

如果您担心 PHP 详细信息被泄露,请说明您的 PHP 解释器是否关闭并且所有内容都通过网络服务器变得可见(正如您问题的 cmets 中提到的那样);你有两个选择。第一个是将包含敏感信息的文件移动到包含 Web 服务器文件的目录之上,然后在您的要求中添加一个额外的 ../。另一种选择是直接通过 .htaccess 限制对文件的访问。

如果您不想允许直接执行您的 PHP 文件,但如果您不想执行我在上一段中描述的操作,您可以做的是:

首先将其放在包含文件的 PHP 脚本中的需求之上:

define('includeAllow', true);

然后将其添加到文件本身的开头 PHP 标记下方:

if (!defined('includeAllow')) {
    die('Access denied.');
}

请注意,如果在服务器上禁用了 PHP,连接信息仍可能被服务器公开。

我应该澄清一下,当 PHP 解释器打开时,除非他们有权访问服务器上的文件(即通过 SSH/FTP),否则无法查看 PHP 文件的源代码,以我的经验,我从未见过PHP 解释器意外关闭或 PHP 意外从服务器卸载。

XSSCSRF 攻击比这种类型的攻击更频繁。这些是您需要保护自己免受攻击的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2011-04-09
    • 2015-09-10
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多