对更高的Web根访问安全登录感到困惑


Confused On Higher Web Root Access For Secure Login

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

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

这是有意义的,因为Javascript运行在客户端,可能会暴露信息,但这让我对如何安全地调用这个php文件有点困惑。

我应该有另一个php文件下面的web根调用web根上面的内容敏感的一个?

这是否可以通过"../../some-folder-above-web-root/some-php-above-web-root.php"来实现,如果是这样,这不是揭示了php文件在web根目录中的位置吗?或者位置不重要吗?因为人们无法访问它。黑客)。

总而言之,我真的只想知道如何与web根以上的脚本通信,正确和安全。

是的,你是正确的。应该有一个PHP文件下面的web根,将访问安全的PHP文件上面的web根。在Zend框架中,有一个单独的index.php文件,称为bootstraper,它做很多事情,包括:

  • 设置错误显示级别
  • 设置包含路径
  • 定义全局常量
  • 读取配置文件
  • 加载库类
  • 获取前端控制器
  • 配置数据库连接
  • 根据RESTful url和MVC确定路由
  • 设置异常处理
  • 调用请求的控制器
我强烈建议使用MVC框架,它们是行业标准,并且为许多常见问题(包括安全登录)提供了预构建的功能。Zend Framework实现了访问控制列表样式的安全性,不过您也可以轻松地设置自己的角色。其他著名的框架有Drupal、Yii、Codeigniter、Symphony、CakePHP和Joomla。

其他关于安全性的最佳实践有:

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

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

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

如果你想在公共web路径之外执行脚本,你必须给'other' EXECUTE权限,这不是很安全。

也关于你关于javascript的问题,它不是关于安全:javascript代码不会在服务器中执行,在那里的文件与明智的信息是,它将在客户端浏览器上执行,所以没有什么可读的。