程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql_real_escape_string

mysql_real_escape_string

編輯:MySQL綜合教程

mysql_real_escape_string

mysql_real_escape_string - 轉義特殊字符在一個SQL語句中使用的字符串

字符串 mysql_real_escape_string( 字符串 $ unescaped_string [, 資源 $ link_identifier])

.轉義特殊字符unescaped_string,考慮到當前字符集的連接,以便它是安全的放置在mysql_query它()。如果二進制數據將被插入,這個函數必須使用。

調用MySQL的庫函數mysql_real_escape_string,其中前添加反斜槓下列字符
此函數必須始終(少),用於制造的數據安全例外在發送查詢到MySQL

nescaped_string

    該字符串轉義。
link_identifier link_identifier

    The MySQL connection. MySQL的連接。 如果鏈接標識沒有指定,最後一個環節開幕mysql_connect()函數假定。如果沒有這樣的鏈接被發現,它會嘗試創建一個仿佛mysql_connect()函數是不帶參數的要求。如果沒有發現或連接建立一條E_WARNING級別的錯誤的產生。

例子1簡單mysql_real_escape_string()例子
<?php
// Connect
$link = mysql_connect ( 'mysql_host' , 'mysql_user' , 'mysql_password' )
OR die( mysql_error ());

// Query
$query = sprintf ( "SELECT * FROM users WHERE user='%s' AND password='%s'" ,
mysql_real_escape_string ( $user ),
mysql_real_escape_string ( $password ));
?>
例如#2例如SQL注入攻擊
<?php
// Query database to check if there are any matching users
$query = "SELECT * FROM users WHERE user=' { $_POST [ 'username' ]} ' AND password=' { $_POST [ 'password' ]} '" ;
mysql_query ( $query );

// We didn't check $_POST['password'], it could be anything the user wanted! For example:
$_POST [ 'username' ] = 'aidan' ;
$_POST [ 'password' ] = "' OR ''='" ;

// This means the query sent to MySQL would be:
echo $query ;
?>

查詢發送到MySQL的:

SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''選擇*從用戶其中user ='艾丹'和password = ''或''=''

這將允許任何人沒有一個有效的登錄密碼登錄。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved