php - 保护 php 到数据库的通信

标签 php mysql security database-connection

我有一个带有表单的 PHP 页面。表单具有 method="POST" 并且操作是另一个将值插入 MySQL 的 PHP 文件。这一切都正常工作。

我的问题是,将信息发送到数据库的第二个 PHP 页面包含用户名、密码、数据库名和信息应该去的表名。我担心有人可以创建自己的 PHP 或 HTML 表单并发布到我的第二个 PHP 文件并将任何值提交到我的数据库。

我想将用户名、密码、数据库名和表名放在第一个 PHP 页面(带有表单)上,并将它们作为变量传递给第二个 PHP 表单,从而消除其他人创建自己的表单并发布任何内容的威胁他们要。 (如果这是可能的并且是正确的方法,你能建议如何传递变量吗?)

这是保护数据库输入的正确方法吗?

最佳答案

将您的服务器视为一个黑盒子。它接受请求并响应它们。对于网站,这意味着任何时候访问 URL、单击链接或提交表单,这都是一个请求。服务器对这些请求执行某些操作,并以新网站、重定向、要下载的文件或其他任何方式进行响应。

HTML 表单实际上只是一个接口(interface),用于从用户那里获取数据并将其打包到请求中。重要的不是 HTML 或生成该 HTML 的 PHP,而是发送到服务器的结果请求,其中包含用户在表单中输入的数据。您甚至可以在没有 HTML 表单的情况下轻松生成此类请求。

使用 Chrome/Safari 中的 Web Inspector、Firefox 中的 Firebug 或 IE Developer Tools 并查看那里的网络检查工具以查看所有请求-响应并查看它们的详细信息。

如果您需要对请求进行任何类型的验证,服务器必须执行此操作。您不能依赖 HTML 表单进行验证。 任何人都可以随时随地向您的服务器发送任何数据。

关于php - 保护 php 到数据库的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037782/

相关文章:

javascript - 有没有办法只接受字母而不接受数字作为输入?如果给出数字,它应该显示验证错误,因为它只需要字母

MySQL:如何从表架构文件创建表?

php - 不同表中两个字段的计数,分组不起作用

java - 如何避免代码库中存在 keystore/trustore 纯文本密码?

php - 无法访问 Heredoc 中的数组

php - 使用 php 和 MySQL 创建动态页面

php - 以 php 形式包含 angularjs 对象

php - 编辑用户时获取下拉列表名称而不是值

mysql - 树结构中用户的 CRUD 权限

linux - 将 Sftp 用户移动到他的 Jail 的子目录中