成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

addslashes注入漏洞與mb_addslashes

coolpail / 1529人閱讀

摘要:由于無視目標(biāo)字符串的編碼,直接按照二進制字節(jié)對字符串添加下劃線,會導(dǎo)致很多注入隱患。傳統(tǒng)的函數(shù)會直接無視掉而直接對后面的加下劃線,結(jié)果變成了。防止注入的話,能夠預(yù)編譯是最好,不能的話應(yīng)該按照當(dāng)前的編碼,用前綴的字符串處理函數(shù)手寫一個。

由于addslashes無視目標(biāo)字符串的編碼,直接按照二進制字節(jié)對字符串添加下劃線,會導(dǎo)致很多注入隱患。

比如說gbk環(huán)境下,有一個寬字符是xbfx27。雖然它不在gbk的編碼范圍內(nèi),但是會把它當(dāng)成寬字符解析,攻擊者可以通過構(gòu)造url參數(shù)等方式傳進來。傳統(tǒng)的addslashes函數(shù)會直接無視掉xbf而直接對后面的x27加下劃線,結(jié)果變成了xbfx5cx27。這樣前面兩個字節(jié)構(gòu)成寬字符,后面的x27就會多帶帶被解析。

防止注入的話,能夠預(yù)編譯是最好,不能的話應(yīng)該按照當(dāng)前的編碼,用mb前綴的字符串處理函數(shù)手寫一個。

比如下面這個:

function mb_addslashes($str, $enco)
{
  $retstr = "";
  $len = mb_strlen($str, $enco);
  for($i = 0; $i < $len; $i++)
  {
    $chr = mb_substr($str, $i, 1, $enco);
    if($chr == "