2014-02-25 127 views
0

下面的php代码是否容易受到SQL注入攻击,或者它是否足够安全?另外:PHP/mySQL准备好的语句

  1. 我应该申请mysql_real_escape_string()由用户传递的值(或试图阉割他们以任何其他方式)...?
  2. 我应该使用php_flag magic_quotes off ...?
  3. 我应该使用php_value magic_quotes_gpc 0 ...?

    $mysqli = new mysqli($server_name, $db_username, $db_password, $db_name); 
    
    $sql = "SELECT * FROM tbl_users WHERE username=? AND password=?"; 
    
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    
    $stmt = $mysqli->prepare($sql); 
    $stmt->bind_param('ss',$username,$password)) { 
    $stmt->execute(); 
    
+0

**一样安全,因为它得到。**想准备的语句作为内部逃逸数据。他们实际上将它传送回服务器... – CodeAngry

+0

魔术引号应该关闭,但他们在PHP 5.3中默认这种方式,并且已经在PHP5.4 + – 2014-02-25 23:11:51

回答

0

因为查询正在准备SQL注入是不可能的。但这并不意味着准备好的声明是100%安全的。 我个人更喜欢PDO。只要看看它。

0

没有什么是绝对安全的,但由于您使用的mysqli和你没有准备,它应该是罚款