Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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中对CSV内容进行Sanatise_Php_Csv_File Upload_Fgetcsv - Fatal编程技术网

在PHP中对CSV内容进行Sanatise

在PHP中对CSV内容进行Sanatise,php,csv,file-upload,fgetcsv,Php,Csv,File Upload,Fgetcsv,我已经为我的web应用程序构建了一个批量用户导入引擎,它工作得非常好。我现在坐在这里问自己,安全吗?毕竟,这个文件的内容正在被注入我的数据库 我不是最聪明的保安呆子,我需要一点建议 上载文件后,用户无法重命名该文件 上传文件时,其名称会立即更改 文件必须为.csv,并且具有csv相对mimetype,以便上传工作 上载的文件存储在无法通过WWW访问的目录中,并在导入完成后立即删除,通常为几百毫秒 我正在打开文件并在导入过程中删除空行 文件的实际内容是什么?如何清理文件以确保它不包含任何可执行

我已经为我的web应用程序构建了一个批量用户导入引擎,它工作得非常好。我现在坐在这里问自己,安全吗?毕竟,这个文件的内容正在被注入我的数据库

我不是最聪明的保安呆子,我需要一点建议

  • 上载文件后,用户无法重命名该文件
  • 上传文件时,其名称会立即更改
  • 文件必须为.csv,并且具有csv相对mimetype,以便上传工作
  • 上载的文件存储在无法通过WWW访问的目录中,并在导入完成后立即删除,通常为几百毫秒
  • 我正在打开文件并在导入过程中删除空行
文件的实际内容是什么?如何清理文件以确保它不包含任何可执行代码?我查看了PHP手册,发现从PHP4.3.5开始,getcsv()是二进制安全的,但老实说,我不能100%确定这意味着什么


我目前正在考虑将CSV内容转换成一个数组,并创建一个函数来转义数组内容。任何其他建议或上述建议是否完全安全?

您可以尝试使用
array\u walk()
运行
mysql\u escape\u string()
或您的数据库等效程序,以双重确保一切都是洁净的

function escape_sql(&$item, $key)
{
  $item = mysql_escape_string($item);

}

array_walk($input_array, 'escape_sql');

如果你的数组是多维的,你可以使用
array\u walk\u recursive()
,它的操作类似。

fgetcsv应该已经将内容放入数组中了……它会返回一个索引数组,但这不会转义或清除任何内容,是吗?我想问题是,我只是一个接一个地转义数组中的每个值吗?它的用户输入是不可信的,它应该被视为与表单数据相同的,所以只需转义整个数组?这是一个选项,您可能需要单独验证每个字段,没有足够的信息来确定答案这就是我要寻找的,我以前从未使用过array_walk,这将使过程更加简单。非常感谢。