相关疑难解决方法(0)

在PHP中,当我向数据库提交字符串时,我应该使用htmlspecialchars()处理非法字符还是使用正则表达式?

我正在处理一个表单,其中有可能让用户在要提交给数据库的字符串中使用非法/特殊字符.我想在字符串中转义/否定这些字符,并且一直在使用htmlspecialchars().但是,有更好/更快的方法吗?

php sql-injection special-characters illegal-characters

19
推荐指数
2
解决办法
8138
查看次数

使用MySQLI正确转义 查询准备好的语句

我读过这个:

将帮助您不要注射.因为逃避只是一个字符串格式化设施,而不是任何方式的防喷射.去搞清楚.然而,转义与准备好的语句有一些共同之处:如果你只使用它来反对臭名昭着的"用户输入",它们都不能保证你注入,而不是作为建立任何查询的严格规则,尽管有数据源.如果你需要插入不是数据而是标识符或关键字.

在下面的帖子:使用sql转义的动态mysql查询是否与预准备语句一样安全?

所以我的问题是使用:

$Var = "UserInput Data Possible SQL Injection";
$mysqli->real_escape_string($Var);
Run Code Online (Sandbox Code Playgroud)

不提供针对SQL注入的保护?

我想使用$mysqli->query();所以我可以使用fetch_array(MYSQLI_ASSOC);因为坦率地说,我不知道如何在使用prepared语句后将结果作为数组获取.

所以如果我在我的数据库连接中有这个:

$STD = new mysqli('localhost', 'root', 'xx', 'xx');
$STD->set_charset('utf8');

if ($STD->connect_error) {
    die("Standard Access Has Been Revoked. Please Contact Administration"); 
}elseif (!$STD){
die ("Other problem With Connecting To Database, Please Contact Administration");
}
Run Code Online (Sandbox Code Playgroud)

如手册中所述 real_escape_string

http://php.net/manual/en/mysqli.real-escape-string.php

以上列表:

注意安全性:默认字符集必须在服务器级别或使用API​​函数mysqli_set_charset()设置字符集,以使其影响mysqli_real_escape_string().有关更多信息,请参阅字符集的概念部分.

链接到:http://php.net/manual/en/mysqli.set-charset.php


我的整体问题可以分为三个选项,第一个是请求语句的fetch_array()equlivant prepared,这将提供完整的SQL注入预防,因为准备好的语句将数据作为原始数据发送.


这种格式的第一个问题如下:

我使用的查询为:

$GetCompletedQuery = $STD->query("SELECT Status FROM UserCompletion WHERE `UserID`=' …
Run Code Online (Sandbox Code Playgroud)

php mysqli

4
推荐指数
1
解决办法
4485
查看次数

如何增强网站的安全性?

问题1:我可以使用吗? $userid = mysql_real_escape_string($_GET['user_id']);

或者我需要使用下面的代码更好?

function mysql_prep( $value ){
        $magic_quotes_active = get_magic_quotes_gpc();
        $new_enough_php = function_exists( "mysql_real_escape_string" ); //example. php >= v4.3.0
        if( $new_enough_php ) { //php v4.30 or higher, undo any magic quote effects so mysql_real_escape_string can do the work
            if( $magic_quotes_active ) { $value = stripslashes( $value );}
            $value = mysql_real_escape_string( $value );
        } else { //before php v4.3.0.
            if( !$magic_quotes_active ) { $value = addslashes( $value ); }
        }
        return $value;
    }

$userid = trim(mysql_prep($_GET['user_id']));
Run Code Online (Sandbox Code Playgroud)

问题2:我们真的需要使用md5()或 …

php mysql

3
推荐指数
1
解决办法
1108
查看次数