最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sql注入與轉義的php函數(shù)代碼

 更新時間:2013年06月17日 10:37:43   作者:  
這篇文章主要介紹了sql的注入與轉義代碼,其實大家在使用過程中多參考dedecms 帝國 phpcms的代碼,相信你的代碼更安全

sql注入:

  正常情況下:

    delete.php?id=3;
    $sql = 'delete from news where id = '.$_GET['id'];

  惡意情況:

    delete.php?id=3 or 1;
    $sql = 'delete from news where id = 3 or 1';  -------如此執(zhí)行后,所有的記錄將都被刪除

   應該采取相關措施。。。比如用之前先判斷是否是數(shù)字等等。

要使自己相信,從客戶端傳來的信息永遠是不可靠的??!

轉義:

  有時候從客戶端傳來的數(shù)據(jù),可能惡意包含些特殊的字符,比如單引號、斜杠等,所以需要轉義,轉義成普通的字符,此時就要用到string addslashes ( string $str ),這個函數(shù)可以對某個變量進行轉義。但是,如果對數(shù)組里的元素進行轉義,就用foreach循環(huán)數(shù)組,如下:

復制代碼 代碼如下:

  foreach($_POST as $k=>$v) {
      if(is_string($v)) {
        $_POST[$k] = addslashes($v);
      }
  }

  但是如果數(shù)組中還包含數(shù)組,那就要遞歸進行轉義了,此時用到

    array_walk_recursive(array &$input , callback $funcname [, mixed $userdata ])

             將用戶自定義函數(shù) funcname 應用到 array 數(shù)組中的每個單元。本函數(shù)會遞歸到更深層的數(shù)組中去。典型情況下 funcname 接受兩個參數(shù)。input 參數(shù)的值作為第一個,鍵名作為第二個。如果提供了可選參數(shù) userdata,將被作為第三個參數(shù)傳遞給 callback funcname。成功時返回 TRUE, 或者在失敗時返回 FALSE

      也就是說:用自定義的函數(shù),至少要能接收兩個參數(shù),而addslashes()只能接收一個參數(shù)所以自定義一個函數(shù)如下:

復制代碼 代碼如下:

      function a(&$v,$k){
        $v=addslashes($v);
      }
      array_walk_recursive(&$arr,'a');

 系統(tǒng)自動轉義:

  PHP中,有一個魔術引號的概念,如何打開?答:在PHP.ini中,magic_quotes_gpc=On;重啟apache即可

  魔術引號被打開后,系統(tǒng)會自動對$_GET,$_POST,$_COOKIE數(shù)據(jù)進行轉義,在不知情的情況下,再次進行手動轉義的話,就轉多了,要想合理的進行轉義,就要首先判斷,魔術符號是否已經打開了,用magic_quotes_gpc()進行判斷,不需要傳值,關閉返回0,關閉返回1

復制代碼 代碼如下:

  if(!get_magic_quotes_gpc()) {  // 如果魔術引號沒開

      function _addslashes(&$v,$k) {
          $v = addslashes($v);
      }
      array_walk_recursive(&$_GET,'_addslashes');
      array_walk_recursive(&$_POST,'_addslashes');
      array_walk_recursive(&$_COOKIE,'_addslashes');
  }

相關文章

最新評論

尚志市| 湘阴县| 林甸县| 浠水县| 巩留县| 原平市| 吴堡县| 靖州| 环江| 翁源县| 溧水县| 得荣县| 闽清县| 泾川县| 黄平县| 福清市| 西安市| 都匀市| 隆德县| 吴忠市| 获嘉县| 泗洪县| 威远县| 黄骅市| 眉山市| 柞水县| 资溪县| 辛集市| 五河县| 利津县| 墨脱县| 西贡区| 淮滨县| 安达市| 六安市| 修水县| 尖扎县| 讷河市| 穆棱市| 长葛市| 连城县|