- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请原谅初学者的问题。欢迎提出建议、链接和进一步阅读。
我担心网页的安全性并寻找最佳实践。当使用 PHP 连接到 MariaDB/MySQL 数据库时,大多数建议将数据库密码放在 PHP 页面(或包含的页面)上。这安全吗?有更好的“最佳实践”吗?
我已经用“哈希密码 MySQL MariaDB PHP7”等关键字搜索了文档、Stack Overflow 和互联网,但答案都是关于客户端登录网页,而不是 PHP 直接与 MariaDB 交互。 MySQL Docs说密码经过哈希处理以便存储,但这对我的 PHP 文件没有帮助。 PHP docs没有提供太多有用的信息,也没有现实世界的例子。
所以,我的问题:
HTTP 用户下载我的源文件并查看这些密码的风险有多高? (我意识到 PHP 解析页面,因此典型用户不会看到原始代码或无法下载 PHP - 并且 ssh、PHP、MariaDB 等的安全性是一个单独的问题。)
<我知道我可以对密码进行哈希处理,但是如果密码就在同一页面上,这有什么用呢? (或者我错过了什么?)
将数据库变量放在文件中更好/更安全,还是使用include("super-sensitive-info.php")
并放置变量那里?我可以(应该)对该文件或该文件进行散列或加密吗?密码,并且仍然可以使用?我可以(应该)隐藏这个文件吗? .super-sensitive-info.php
),然后使用服务器安全来限制访问?
而且,使用特殊字符给我带来了麻烦,例如$password = "pa$$w@rd";
应类似于 $password = "pa\$\$w\@rd";
,每个典型的代码输入- 引号练习?或者我是否错过了关于我不应该在 SQL 中使用特殊字符的备忘录?
为了创建一个简单的示例,假设我有两个文件,如下所示。有没有更好的办法?或者就是这个?
super-sensitive-info.php
$user = "username"
$password = "password"
// $password = "pa\$\$w\@rd"; // (e.g. if database pw is "pa$$w@rd"?
$database_name = "database_name"
// I can hash it, but this seems only useful for client logins and such,
// unless I can hash this entire file....
// $hashed_password = password_hash($password, PASSWORD_DEFAULT);
index.php
include("super-sensitive-info.php")
$db = mysqli_connect('localhost',$user,$password,$database_name)
or die('Error connecting to MySQL server: ' . mysqli_connect_error());
$query = "SELECT * FROM episodes";
最佳答案
有关一些最佳实践,请查看最常用的框架的代码。
简而言之,@chris85 提出了最重要的几点。通常它具有以下文件夹结构:
config/config.local.php
public/index.php
添加config/*.local.php
到git忽略:
$ echo "config/*.local.php">>.gitignore
在config.php
中:
return [
'db' => [
'username' => '...',
...
]
];
在index.php
中:
$config = require '../config.php';
$db = DbConnect($config['db']);
echo json_encode($db->getAllEpisodes());
从公共(public)文件夹提供您的页面:
$ php -S localhost:8000 -t ./public/
关于php - MySQL/MariaDB 是否对 PHP (7.x) mysqli_connect 的数据库密码进行哈希处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908684/
我在 CentOS 6.4 上运行 MariaDB (10.0.2-MariaDB) 并且想使用 MariaDB 的 CONNECT-Engine 从一些日志文件中读取。由于日志文件很大,我用两个 C
MariaDB 是否支持嵌套事务(不是保存点)? 我希望能够在存储过程中使用嵌套事务。目前在 MySQL 中,我将一个参数“useTransaction”传递给每个存储过程,它控制我是否在该存储过程的
MariaDb 的默认端口是什么? 我是编程新手。我正在创建我的第一个连接到 MariaDB 的 Java 应用程序。我需要指定数据库端口。 最佳答案 Mariadb 的默认端口是 3306。 它与
ubuntu:~$ sudo apt-get install mariadb-server Reading package lists... Done Building dependency tr
我在Ubuntu 18.04上使用的是Mariadb 10.4.10,工具客户端是DBeaver 6.2.5 我想充分利用 Mariadb 中的约束检查功能来确保数据完整性,因为它是从 10.2.1
当我在 phpmyadmin 中运行这个 sql 时 SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE; 表明 @@SQL_MODE STRICT_TRANS_TABLES,E
我正在尝试使用 MariaDB 10.1.12 的联合引擎来创建基于远程数据库中的表的表。关注MariaDB instructions关于如何使用 FederatedX 实现,在数据库 db1 中我创
我在该数据库中有此列,其中包含空格键,我想更改它。 ALTER TABLE . CHANGE COLUMN `Anzahl Personen` AnzahlPersonen int(11); 在命令行
我正在尝试安装 maria db 并遇到以下问题。 [root@localhost ~]# service mysqld start Redirecting to /bin/systemctl sta
我已经基于 mariadb:10.1 构建了一个图像这基本上添加了一个新的 cluster.conf但是在第一个节点开始成功工作后,在第二个节点上面临以下错误。有人可以帮我在这里调试吗? 错误日志尾部
我已阅读 the docs用于 MariaDB REGEX_REPLACE但无法让我的查询工作。我将链接存储在一列中,link并想更改链接的结尾: 来自 www.example.com/至 www.e
我在 MariaDB 的 ColumnStore 上发现的每一项分析都声称它使用的磁盘空间比 InnoDB 等常规引擎少,例如:https://www.percona.com/blog/2017/03
如何在 MariaDB 中重置密码?我使用 Windows 而不是 Linux。谁知道如何重置我的 MySQL MariaDB 密码?我尝试在 Google 上搜索但没有帮助。 最佳答案 我遇到了同样
我正在尝试将 Quarkus 与 MariaDB 图像一起用于测试。 使用 mvn integration-test 启动测试时,我得到以下信息: Unable to start devservice
我正在尝试更新存储在 MariaDB 的 json 列中的数据(libmysql 版本 - 5.6.43,服务器:10.3.34-MariaDB-cll-lve - MariaDB 服务器)。 我的数
我有一个使用 MariaDB 中的表定义的多对多关系。我正在尝试将 Entity Framework Core 中的导航属性用于相关实体,但它们没有水合。 roles | role_id | role
Entity Framework Core 是否支持 MariaDB? 我看到它不在 supported providers 的列表中,但 MySQL 是。也许 MySQL 提供程序会针对 Maria
我在 MariaDb (10.4.10-MariaDB-1:10.4.10+maria~bionic) 中有一个巨大的表,我正在使用添加一个新列 alter table Appointment add
有没有一种方法可以监听 MySQL/MariaDB 中的数据库更改,就像您可以跟踪 MongoDB oplog 一样?我在网上找不到关于此的信息。也许它只适用于 Postgres 而不适用于 MySQ
我刚刚在 Centos 7 中安装了 MariaDB 10.3 数据库服务器。 一切顺利,但在执行“systemctl status mariadb”命令时。这是完整的输出: root@vps [/e
我是一名优秀的程序员,十分优秀!