一、啟動magic_quotes_gpc
magic_quotes_gpc是PHP內建,一項防禦SQL injection的基本手段,他會自動去將所有透過GET、POST傳值的資訊進行處理,把一些符號(例如單引號、雙引號)加入轉義符號(反斜線),藉此來避免SQL injection的問題,不過magic_quotes_gpc有個缺點就是,如果使用者傳入的資料並非是攻擊字串,可是在開啟magic_quotes_gpc的情況下他仍然會進行處理,這時候就會導致使用者的輸入資料與原本的不同,因此是否要啟動magic_quotes_gpc就看你個人選擇
啟動magic_quotes_gpc很簡單,開啟你的php.ini,然後搜尋「magic_quotes_gpc」
把magic_quotes_gpc=off改成magic_quotes_gpc=on
預設情況下是開啟的
二、將傳入的資料進行處理
前面講過,因為magic_quotes_gpc會對傳入的資料進行處理,有時候會處理到不該處理的資料,這時候可能會造成困擾,因此有人會將此項功能關閉,如果你把magic_quotes_gpc關閉的話也沒有關係,這裡要介紹兩個PHP的函式,可以做到跟magic_quotes_gpc一樣的效果,只是彈性更大,magic_quotes_gpc會對「所有」GET、POST都做處理,但是這裡介紹的函式是可以指定性的使用的~
這裡要介紹的兩個函式分別是mysql_real_escape_string跟addslashes,這兩個函式功能相近,只是mysql_real_escape_string的功能更多,他會處理更多資料,而addslashes只會對「單引號、雙引號、反斜線進行處理」,至於要用哪個就看你自己的選擇,另外在使用這兩個函式之前,要先透過get_magic_quotes_gpc這個函式檢查式有有開啟magic_quotes_gpc模式,如果再開啟magic_quotes_gpc的情況下使用這兩個函式,就會造成重複處理,會出問題
兩個函式的使用都是直接將要處理的變數傳進去就可以了,另外get_magic_quotes_gpc的部份,當返回0代表沒有啟動,返回1代表有啟動
資料來源: http://jishus.org/?p=666
沒有留言:
發佈留言