现在要尝试使用安全登录的形式,并且连接到数据库的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确定路由 设置异常处理
- 调用请求的控制器
其他关于安全性的最佳实践有:
- 根据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代码不会在服务器中执行,在那里的文件与明智的信息是,它将在客户端浏览器上执行,所以没有什么可读的。