什麼是魔術引號
warning
本特性已自 php 5.3.0 起廢棄並將自 php 5.4.0 起移除。
當開啟時,所有的 '(單引號),"(雙引號),\(反斜線)和 null 字元都會被自動加上乙個反斜線進行轉義。這和 addslashes() 作用完全相同。
一共有三個魔術引號指令:
magic_quotes_gpc 影響到 http 請求資料(get,post 和 cookie)。不能在執行時改變。在 php 中預設值為 on。 參見 get_magic_quotes_gpc()。
magic_quotes_runtime 如果開啟的話,大部份從外部**取得資料並返回的函式,包括從資料庫和文字檔案,所返回的資料都會被反斜線轉義。該選項可在執行的時改變,在 php 中的預設值為 off。 參見 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。
magic_quotes_sybase 如果開啟的話,將會使用單引號對單引號進行轉義而非反斜線。此選項會完全覆蓋 magic_quotes_gpc。如果同時開啟兩個選項的話,單引號將會被轉義成 ''。而雙引號、反斜線 和 null 字元將不會進行轉義。 如何取得其值參見 ini_get()。
addslashes — 使用反斜線引用字串
說明 ¶
string addslashes ( string $str )
返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與 nul(null 字元)。
乙個使用 addslashes() 的例子是當你要往資料庫中輸入資料時。 例如,將名字 o'reilly 插入到資料庫中,這就需要對其進行轉義。 強烈建議使用 dbms 指定的轉義函式 (比如 mysql 是 mysqli_real_escape_string(),postgresql 是 pg_escape_string()),但是如果你使用的 dbms 沒有乙個轉義函式,並且使用 \ 來轉義特殊字元,你可以使用這個函式。 僅僅是為了獲取插入資料庫的資料,額外的 \ 並不會插入。 當 php 指令 magic_quotes_sybase 被設定成 on 時,意味著插入 ' 時將使用 ' 進行轉義。
php 5.4 之前 php 指令 magic_quotes_gpc 預設是 on, 實際上所有的 get、post 和 cookie 資料都用被 addslashes() 了。 不要對已經被 magic_quotes_gpc 轉義過的字串使用 addslashes(),因為這樣會導致雙層轉義。 遇到這種情況時可以使用函式 get_magic_quotes_gpc() 進行檢測。
引數 ¶
str要轉義的字元。
返回值 ¶
返回轉義後的字元。
gbk編碼下使用寬位元組注入:%df
demo**: $sql = "select * from news where id=$id"
傳入後: $sql = "select * from news where id=1"
繞過方式: 直接注入
繞過**: $sql = "select * from news where id=1 union select 1,2,3"
demo**: $sql = "select * from news where id=『$name』"
傳入後: $sql = "select * from news where id=『xiaodi』"
繞過方式: 閉合前後單引號
繞過方式: $sql = "select * from news where id=『xiaodi' union select 1,2,3 and '1'='1』"
demo**: $sql = "select * from news where name like '%$username%' order by name"
傳入後: $sql = "select * from news where name like '%xiaodi%' order by name"
繞過方式: 閉合%正則符號和單引號
繞過方式: $sql = "select * from news where name like '%xiaodi%' union select 1,2,3 and '%'='%' order by name"
end.
web安全及防護 XSS CSRF sql注入
個人理解 web安全防護分為三種 xss csrf sql注入 xss xss攻擊原理 有很多登入頁面都有記住賬戶和密碼功能 方便下次登入 有的 是用明文記錄使用者名稱和密碼的 有的不良使用者會利用這點使用簡單工具檢視cookie結構 如果 有xss漏洞利用jsonp獲取到使用者的賬戶和密碼 攻擊防...
WEB安全 SQL注入
sql注入 or 1 例如 select form table1 where name param 一般param是從頁面輸入控制項傳遞來的資料 如果你在控制項中輸入 or 1 1 那麼他將查詢所有的資料出來 表示後面的都被注釋掉了 你還可以 drop table table1 那麼他將刪除該錶,其...
web安全 sql注入
所謂sql注入,就是通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意的 sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,...