Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从$\u GET/$\u POST获取信息并将其保存到数据库的实践?_Php_Mysql_Security_Sql Injection - Fatal编程技术网

Php 从$\u GET/$\u POST获取信息并将其保存到数据库的实践?

Php 从$\u GET/$\u POST获取信息并将其保存到数据库的实践?,php,mysql,security,sql-injection,Php,Mysql,Security,Sql Injection,当从get/post获取信息并将信息保存到数据库时,今天的最佳实践是什么?数据是否仍然像以前一样被转义,或者是否有其他做法?另外,HTMLPurifier可以在哪里安装?我目前正在使用它来过滤富文本。这取决于你的值是什么以及它们来自哪里。简短而甜蜜的回答是: 逃生和消毒 这意味着确保将所有字符串都放在引号中,并确保转义用户提交的字符串中的所有特殊字符。键入匹配和长度检查。这取决于您的值是什么以及它们来自何处。简短而甜蜜的回答是: 逃生和消毒 这意味着确保将所有字符串都放在引号中,并确保转义用户提

当从get/post获取信息并将信息保存到数据库时,今天的最佳实践是什么?数据是否仍然像以前一样被转义,或者是否有其他做法?另外,HTMLPurifier可以在哪里安装?我目前正在使用它来过滤富文本。

这取决于你的值是什么以及它们来自哪里。简短而甜蜜的回答是:

逃生和消毒


这意味着确保将所有字符串都放在引号中,并确保转义用户提交的字符串中的所有特殊字符。键入匹配和长度检查。

这取决于您的值是什么以及它们来自何处。简短而甜蜜的回答是:

逃生和消毒


这意味着确保将所有字符串都放在引号中,并确保转义用户提交的字符串中的所有特殊字符。键入匹配和长度检查。

在将数据放入数据库之前,切勿将其转义为表示格式;如果合适,请对其进行清理,但数据库始终包含“最原始”形式的数据


在显示之前,始终将数据转义为表示格式,除非确定不应转义数据,并且不转义数据是安全的。

在将数据放入数据库之前,切勿将数据转义为表示格式;如果合适,请对其进行清理,但数据库始终包含“最原始”形式的数据


在显示之前,请始终将数据转义为表示格式,除非确定不应转义数据,并且不转义数据是安全的。

即使您在网站上进行验证,也不应假定GET或POST中的信息已正确转义,javascript可以被禁用,请求可以被手动编码以进行SQL注入攻击。生成查询字符串时,请使用
mysql\u real\u escape\u string()


从快速阅读中我可以看出,HTML净化器是解析所见即所得编辑器的输出,或者您希望用户提供正确HTML的任何地方。它使您可以控制禁止和过滤某些内容(如脚本),并确保所有标记都正确嵌套和关闭。如果在从数据库读回数据后将HTML转储到页面中,这一点尤为重要。

您永远不应该认为GET或POST中的信息已正确转义,即使您在网站上进行验证,javascript也可能被禁用,请求也可能被手动编码以进行SQL注入攻击。生成查询字符串时,请使用
mysql\u real\u escape\u string()


从快速阅读中我可以看出,HTML净化器是解析所见即所得编辑器的输出,或者您希望用户提供正确HTML的任何地方。它使您可以控制禁止和过滤某些内容(如脚本),并确保所有标记都正确嵌套和关闭。如果在从数据库读回数据后将HTML转储到页面中,这一点尤为重要。

切勿从GET to db保存数据。

永远不要从GET保存数据,即使您正在进行充分的验证和转义。GET不应更改服务器上的信息

在更改服务器上的任何内容(数据库或服务器文件)之前,检查请求是否为POST、PUT或DELETE(如适用)

POST应该更改服务器的状态。因此,在更新表或更改服务器上的任何文件之前,请检查请求方法是否为post

在处理前验证输入

如果需要整数,请验证输入是否确实是整数

在数据库查询中使用或添加到输出之前转义输入

出于查询目的,转义输入,如果使用输入直接打印到输出,则去掉斜杠并对其进行清理

当您拥有用户会话权限时,使用易腐代币进行POST

如果您有用户登录,请使用访问令牌,并每隔5分钟左右更新一次令牌

在没有用户会话时使用访问令牌


正如Ankur所建议的,在没有登录会话时使用访问令牌。但这是不可靠的。

从不保存来自GET to db的数据。

永远不要从GET保存数据,即使您正在进行充分的验证和转义。GET不应更改服务器上的信息

在更改服务器上的任何内容(数据库或服务器文件)之前,检查请求是否为POST、PUT或DELETE(如适用)

POST应该更改服务器的状态。因此,在更新表或更改服务器上的任何文件之前,请检查请求方法是否为post

在处理前验证输入

如果需要整数,请验证输入是否确实是整数

在数据库查询中使用或添加到输出之前转义输入

出于查询目的,转义输入,如果使用输入直接打印到输出,则去掉斜杠并对其进行清理

当您拥有用户会话权限时,使用易腐代币进行POST

如果您有用户登录,请使用访问令牌,并每隔5分钟左右更新一次令牌

在没有用户会话时使用访问令牌


正如Ankur所建议的,在没有登录会话时使用访问令牌。但这是不可靠的。

这完全取决于您将如何处理数据。这取决于需要用它做什么样的逃跑。你能添加一些上下文吗?嗨,佩卡。大部分数据将被保存,然后在以后显示。这是针对社交网站的。这完全取决于你将如何处理这些数据。我