Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 在序列化和插入到数据库之前清理字符串_Php - Fatal编程技术网

Php 在序列化和插入到数据库之前清理字符串

Php 在序列化和插入到数据库之前清理字符串,php,Php,我面临一个奇怪的问题 $string是用户输入 $log = serialize(array('string' => $string); 例如:“测试”将是 “字符串”;s:4:“测试” 但是,当用户提交引号和其他一些字符时会出现问题,例如; 当然,我首先转义字符串,但是序列化数据不能取消序列化 提交给db之前的htmlentities也不起作用,因为将数据弄乱 有什么建议吗 请不要告诉我创建db字段而不要使用serialize()我不确定这是否是最佳做法,但一个快速的破解方法是:在将数

我面临一个奇怪的问题

$string
是用户输入

$log = serialize(array('string' => $string);
例如:“测试”将是

“字符串”;s:4:“测试”

但是,当用户提交引号和其他一些字符时会出现问题,例如; 当然,我首先转义字符串,但是序列化数据不能取消序列化

提交给db之前的
htmlentities
也不起作用,因为
将数据弄乱

有什么建议吗


请不要告诉我创建db字段而不要使用
serialize()

我不确定这是否是最佳做法,但一个快速的破解方法是:在将数据发送到db时加密数据,然后在检索数据时解密数据。现在,如果您认为使用base64进行加密可能存在安全问题,请使用以下链接以更好的方式进行加密:

在将用户输入插入数据库之前,您需要将其转义,这不仅是因为它会破坏您的应用程序,而且如果您不这样做,它是一个严重的安全漏洞

请阅读本文:


我强烈建议您在应用程序中使用,或者在转义上实现一个抽象,并始终在应用程序中使用它(例如使用
mysqli\u real\u escape\u string
)。

Erm:“当用户提交引号和一些其他字符时会出现问题,例如;”=>不,它们没有,请尝试。“清理”因为数据库完全依赖于您正在使用的任何数据库和数据库接口库。例如,如果使用Postgres,建议使用mysql\u real\u escape\u string()将毫无意义。如果您使用PDO,也将是完全冗余的。同样,使用HTMLenties进行DB消毒相当于使用汽油灭火。好主意,谢谢。我不知道会有什么安全问题,因为传输的不是敏感数据。encode-escape-db-decode-htmlintles。