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