1

现在要尝试使用安全登录的形式,连接到数据库的 php 文件将存储在 web 根目录 public_html 之上,因此它们不能被公开访问。

我的第一个问题是人们说你不能用 Javascript 调用这个 php 文件。

这是有道理的,因为 Javascript 在客户端运行并且可以公开信息,但这让我对如何安全地调用这个 php 文件感到有些困惑。

我是否应该在 web 根目录下有另一个 php 文件来调用 web 根目录上方的内容敏感文件?

这是否可以通过“../../some-folder-above-web-root/some-php-above-web-root.php”来实现,如果是这样,这是否会暴露 php 文件的位置在网络根目录?或者它的位置不重要,因为人们无法访问它(..黑客)。

总而言之,我真的只是想知道如何正确且安全地与 Web 根目录上方的脚本进行通信。

4

2 回答 2

2

是的,你是对的。Web 根目录下应该有一个 PHP 文件,它将访问 Web 根目录上方的受保护的 PHP 文件。在 Zend Framework 中,有一个名为 bootstraper 的 index.php 文件,它可以做很多事情,包括:

  • 设置错误显示级别
  • 设置包含路径
  • 定义全局常量
  • 读取配置文件
  • 加载库类
  • 获取前端控制器
  • 配置数据库连接
  • 根据 RESTful url 和 MVC 确定路由
  • 设置异常处理
  • 调用请求的控制器

我强烈建议使用 MVC 框架,它们是行业标准,并且具有针对包括安全登录在内的许多常见问题的预构建功能。Zend Framework 实现了访问控制列表样式的安全性,尽管您可以轻松地扮演自己的角色。其他值得注意的框架是 Drupal、Yii、Codeigniter、Symphony、CakePHP 和 Joomla。

其他最佳安全实践包括:

  • 根据 mimetype 过滤所有文件上传,而不是文件扩展名或文件类型
  • 根据数据库表列类型和长度过滤所有 POST 和 GET 数据
  • 在运行它们之前清理所有 SQL 字符串
  • 更改服务器上的所有默认登录密码,例如:Apache、MySQL、FTP、SSH、SVN 等。
  • 学习如何配置 php.ini、httpd.conf 等。
  • 禁用任何不在您的框架、PHP、Apache 和 MySQL 中使用的服务、模块和插件
  • 模糊你的代码
  • 使用单元测试
  • 了解一点渗透测试
于 2013-01-08T16:18:16.150 回答
1

您可以为其他文件授予只读权限,例如 754(root 的所有权限,组的读取和执行权限,其他的只读权限),然后您可以使用例如file_get_contents和绝对路径读取其内容。

一种常见的方法是在公共 Web 目录之外有一个配置文件(其中包含敏感信息),使用绝对路径读取它,然后将其用作变量。

如果您想在公共网络路径之外执行脚本,您必须授予“其他”执行权限,这不太安全。

另外关于您关于javascript的问题,它与安全性无关:javascript代码不会在服务器中执行,其中包含敏感信息的文件,它将在客户端浏览器上执行,因此那里没有什么可读取的。

于 2013-01-08T16:10:51.810 回答