Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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_Database Design_Escaping - Fatal编程技术网

Php 在平面文件数据库中使用哪些字符必须转义?

Php 在平面文件数据库中使用哪些字符必须转义?,php,database-design,escaping,Php,Database Design,Escaping,在用户输入平面文件数据库时,需要转义哪些字符?我已经对类型进行了显式测试,但我知道代码可以注入数据库或用于更改查询 那么,在存储用户输入之前,我必须转义哪些字符 欢迎提出其他安全建议,因为我可能遗漏了一些内容 阅读评论后,这是我的功能: private function cleanInput($input) { switch($this->_config->delimiter()) { case '\"'; ca

在用户输入平面文件数据库时,需要转义哪些字符?我已经对类型进行了显式测试,但我知道代码可以注入数据库或用于更改查询

那么,在存储用户输入之前,我必须转义哪些字符

欢迎提出其他安全建议,因为我可能遗漏了一些内容

阅读评论后,这是我的功能:

    private function cleanInput($input) {
        switch($this->_config->delimiter()) {
            case '\"';
            case '"';
            case '\\';
            case '\0';
                break;
            default;
                $input = addslashes($input);
        }               
        $output = preg_quote($input, $this->_config->delimiter());
        return $output;
    }

不同的数据库引擎需要转义不同的字符,但大多数都类似于单引号。对于未知数据库,可以使用PHP函数

强烈建议使用DBMS特定的转义函数,例如。 对于MySQL还是对于 PostgreSQL,但是如果您使用的DBMS没有转义 函数,DBMS使用\来转义特殊字符,您可以使用 功能


您需要逃避的内容取决于您对数据所做的操作。如果您只是将数据以这种格式转储到平面文件中:

foo,bar,baz
foo1,bar1,baz1
显然,和换行符是存储格式中的重要字符。因此,需要对值本身中的任何字符或换行符进行转义

还有一个问题是如何插入数据。如果您只是使用fwrite$fh$data转储它,那么就没有什么可以逃避的了。如果在flatfile后端使用类似SQL的前端,则需要转义可能连接到SQL查询中的任何值,以保持SQL语法有效


只有在将文本字符串嵌入其他字符串时,才需要转义数据。有些字符具有特殊含义,您不希望值字符串中的这些特殊字符触发任何特殊操作。在这种情况下,您需要转义任何可能具有特殊含义的字符。

我用一个示例函数更新了我的问题,其中$this->\u config->delimiter是分隔符字符。看起来可以吗?