php - 设置 mySql 服务器和 Xampp 现在需要了解基本的安全性

标签 php mysql server xampp localhost

再次,我问的是最基本的问题......

奇迹般地,我安装了 mySql 服务器并使用 Workbench 应用程序创建了我的第一个表。在一周内,我学到了足够多的 PHP 来制作一个如此脆弱的应用程序,我将其丢弃并重新开始。我想将开发转移到我的本地机器上,所以我只是让 Xampp 运行并使用它来毫无问题地启动 mySql 服务器。我怎么可能在不输入凭据的情况下启动服务器?我使用 Workbench 设置 mySql Server 密码。我还没有在服务器上使用命令行。我使用 chrome 打开了 localhost,它显示了一个 IP 地址。关于基本安全,接下来我需要做什么?感谢您花时间阅读本文。

最佳答案

基础知识

让我们了解 PHP 的工作原理;当您编写 PHP 代码时,这意味着位于 <?php ... ?> 中的代码,它将在服务器上执行,在本例中是您的 XAMPP 实例。

这意味着每当用户访问该网站时,他/她将无法真正看到您编写的代码,相反,他们将看到该代码的呈现。

渲染将是 echo 之后的任何内容, print_r , var_dump , 或者在你的 PHP 括号之外。

当连接到您的数据库时,您可以采取某些步骤来保护它,但是,这实际上不是必需的。看看 Laravel 的 Eloquent 系统就知道了。您的实际数据库信息完全存储在您的 .env 中文件。

例子

现在,在考虑安全性的情况下进行开发时,您必须小心,要牢记以下重要规则:

  1. 始终过滤用户输入

这个应该是给定的;但是新网站日复一日地遭到黑客攻击,因为输入没有被正确过滤,允许任何人将代码注入(inject)脚本——无论是在 SQL 实例还是前端 JavaScript 代码。

一个很好的方法是始终转换您真正要找的东西; PHP 是一种弱类型语言。这意味着 '1' == 1 . ('1' 是字符串,1 是整数)

绕过这个的一种方法是通过 casting types在处理用户输入时。了解您的数据库需要什么。无论是字符串、整数还是 bool 值。这将使您能够确定数据库请求仅使用正确的类型。

例如:

$var = (integer) 'Hello';
var_dump($var); // returns `int(0)`
  1. 使用准备好的语句

它们并不难,而且在安全性方面非常基础 - 这是使用用户数据的最佳方式之一,而无需将其直接插入您的 SQL 查询之一。

一个非常糟糕的查询示例:

$sql = 'SELECT * FROM users WHERE id = ' . $id;
$query = $connection->query($sql);

你应该选择做的是:

$sql = 'SELECT * FROM users WHERE id = ?';
$stmt = $connection->prepare($sql);
$stmt->bind_param('i', $id);
$stmt->execute();

拜托,read more here .

最后的想法

您似乎对编程还很陌生。关注安全性是件好事,因为它是优秀 Web 应用程序最重要的支柱之一。但是,我的最终建议是让您从基础开始。了解 PHP 文化,了解并理解 PHP 的工作原理,然后在安全性方面您将能够取得更多成就。

与 PHP 一起学习 Apache 以及如何发出请求,彻底了解 HTTP 请求,这将使您更好地了解构建安全应用程序时必须考虑的所有因素。您可能拥有世界上最棒的 PHP 代码,但如果您的 HTTP 协议(protocol)未使用 SSL,那么任何发送到您服务器的请求都在 plaintext 中。让全世界都看到。

关于php - 设置 mySql 服务器和 Xampp 现在需要了解基本的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52657585/

相关文章:

javascript - 如何跟踪服务器中音频文件的播放次数?

php - 如何使整个类(class)的变量成为全局变量

php - 数据库和用户照片管理

javascript - 模块化模式与原型(prototype) - Nodejs?

mysql - 搜索与模式匹配的表然后截断它们的脚本

php - 离线移动 PHP MySQL Web 应用程序

jquery - Openfire 3.9.3 中的消息 Carbon 问题 - 未在所有登录设备中获取 Carbon 消息

php - Laravel 是否有在 paths.php 中组织路由的约定?

php - 计算两条平行线的重叠

javascript - 复选框和输入值位于同一行