在 PHP 代码中隐藏数据库登录信息

2024-04-14

我是网络编程的初学者。我正在尝试创建一个从 SQL 数据库读取数据的简单网站。起初我只是写了我的数据库密码并直接登录到php代码:

<?php
$username = "login";
$password = "pw";
mysql_connect("server", $username, $password);
...
?>

这显然不是一个好主意!那么(更)更“安全”的方法是什么?我读到关于将 php 代码放入一个单独的文件中,这意味着不要放入网站的主 php 文档中,然后限制对该文件的访问。也许通过 .htaccess 文件。这是要走的路吗?


The config.php文件和.htaccess is a 经典/好方法。这是 CMS 或框架通常完成的方式。

正如所指出的JohnP,您还可以存储config.php 公共目录之外,这意味着它不能通过 HTTP 访问。这对于安全性来说只是好一点(如果你的 .htaccess 没有犯错,就不会再有风险了)。

文件结构示例:

  • config/-> 配置文件
  • lib/-> 库和实用程序 PHP 文件
  • public/-> 所有公共页面/文件/图像...

那样,http://www.your-site.com/ http://www.your-site.com/指着public/,因此无法访问配置。但此解决方案意味着您可以更改根 Web 目录(或者它已经是这样)。

最后,你要记得设置这个文件Apache 用户可读可写只是,不是每个人(unix 文件访问权限),这样如果有人通过其他用户访问您的服务器,他就无法读取该文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 代码中隐藏数据库登录信息 的相关文章

  • 在 Zend Framework 2 (ZF2) 中创建新控制器的问题

    我正在使用 ZF2 Skeleton 应用程序 为了在现有模块中创建新控制器 我修改了模块 config php像这样的文件
  • 从 PHP 启动交互式 SSH bash 会话

    我正在使用 PHP 编写常见服务器管理任务的快捷方式 我正在使用deployer org 但这应该不重要 我想添加一个任务 用于在通过 SSH 连接到服务器后启动交互式 bash 提示符 例如 您将运行 dep ssh 其中 dep 是一个
  • PCRE 库版本太旧

    Bug Genie 3 需要 PCRE 库 8 0 或更高版本 你有 版本 7 8 2008 09 05 将您的系统更新到最新版本 你常用的来源 在我查看问题并尝试通过以下步骤更新我的 PCRE 库后 wget the latest sou
  • 处理表单的最佳实践

    我想知道处理表单处理的最佳实践是什么 就我而言 我做了类似的事情 if the user hasn t submited the form 显示表格 else if there are form errors 显示错误 再次显示表格 els
  • 选择不同的字段和行号只是为了显示 ID 号会产生重复的数据

    我有一个表应用程序 它有 10 列 类别是一列 并且该列有重复值 为了获得不同的值 我有一个查询 SELECT distinct CATEGORY as CategoryName FROM APPLICATION where applica
  • Ionic 3 Uncaught(承诺):[object Object]

    我是 Ionic 3 和移动开发的新手 我正在尝试将 MySQL DB 连接到我的 Ionic 应用程序和 PHP Restful API 我用 Postman 测试了 API 它工作得很好 为了在 Ionic 中实现它 我做了以下操作 我
  • 为什么 XDebug 忽略 NetBeans 6.8 中的断点?

    我在 Ubuntu 10 04 笔记本电脑上运行 PHP 5 3 2 Apache 2 2 14 和 xdebug 2 2 0rc1 并且尝试在 Netbeans 6 8 中的本地主机上设置调试 我的问题是我在 Netbeans 中设置的断
  • ? LIKE(列 || '%')

    我可以有这样的条件吗 SELECT FROM table WHERE LIKE column 哪里的 是一个字符串参数值 例如 这些参数值 当列等于时应返回 true admin products admin products 1 admi
  • ORA-00972 标识符别名列名太长

    我有一个查询 例如 SELECT column as averyveryveryverylongalias more than 30 characters FROM Table name 它返回错误ORA 00972 标识符太长 有什么技巧
  • 如何将 SELECT...INTO 与 JOIN 一起使用?

    我有以下示例代码 DECLARE myRow table rowtype myVar table2 column type BEGIN SELECT table col1 table col3 table col4 table2 colum
  • 我可以在 MySQL 中存储图像吗?

    这个问题在这里已经有答案了 可能的重复 MySQL 中的图像 https stackoverflow com questions 1665730 images in mysql 在 MySQL 中存储图像 https stackoverfl
  • MySQL 1443:这是什么意思?

    我正在尝试在 MySQL 5 0 中进行以下形式的更新 update mytable myfield t set f blah where t id in select v id from myview v where MySQL 告诉我
  • PHPSpreadsheet 文本旋转到 90 不起作用

    我正在尝试使用文本旋转到 90 度来使单元格具有垂直文本 但它不起作用 所有文本都是水平显示的 也许我做错了什么 这是我的 php 代码 spreadsheet new Spreadsheet Create a new worksheet
  • 我被击败了 我只是想开发自己的画廊 但一开始我就失败了 在 a 中显示图像作为背景 div 我已经把我的代码颠倒了 搜索了网络 搜索了 stackoverflow 尽管我无法解决问题 这是我的代码 HTML PHP div class im
  • 如何计算 MySQL 中日期的平均值?

    如何在 MySQL 中计算日期之间的平均值 我对时间值 小时和分钟更感兴趣 在桌子上有 date one datetime date two datetime 执行如下查询 SELECT AVG date one date two FROM
  • Docker 应用程序更新后无法连接到数据库

    在我的公司 我有一个旧的 Symfony 应用程序在 Docker 容器中运行 该应用程序连接到一个 SQL 数据库 该数据库也在 Docker 容器内运行 该图像是使用 php 7 2 apache stretch 构建的 但该版本已不再
  • 在 PHP 中将数组转换为字符串并将其恢复为数组

    我正在使用 Serialize 函数将数组存储在我的 MYSQL 数据库中 然后我在其他页面中取消序列化他 数组结构如下所示 Array 0 gt Array names gt somename1 rating gt 10 1 gt Arr
  • 显示 Presto 中所有模式的表

    急速 SHOW SCHEMAS 返回所有模式 SHOW TABLES FROM foo 返回 foo 模式的所有表 有没有一种简单的方法可以从 Presto 中的所有模式返回表 您可以使用select table schema table
  • 分层数据库模型

    我正在设计一个关于宠物的分类网站 该网站将包含 3 个 主要 类别的广告 A Sale B Breeding C Jobs 我面临的问题是 所有 3 个广告类别都有一些共同点 但也有一些差异 例如 类别 A B 和 C 都有以下共同点 ca
  • 上传文件最安全的方法是什么?

    我工作的公司最近在我们托管的网站上遭受了许多标头注入和文件上传漏洞攻击 虽然我们已经解决了标头注入攻击的问题 但我们尚未控制上传漏洞 我正在尝试设置一系列即插即用类型的上传脚本以供内部使用 设计人员可以将其复制到其网站的结构中 修改一些变量

随机推荐