中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用php怎么實現sql注入與轉義

發布時間:2021-03-05 16:54:13 來源:億速云 閱讀:255 作者:Leah 欄目:開發技術

本篇文章為大家展示了使用php怎么實現sql注入與轉義,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創新的語法,主要用來做網站開發,許多小型網站都用php開發,因為php是開源的,從而使得php經久不衰。

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';  -------如此執行后,所有的記錄將都被刪除

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

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

轉義:

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

復制代碼 代碼如下:


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

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

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

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

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

復制代碼 代碼如下:


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

 系統自動轉義:

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

  魔術引號被打開后,系統會自動對$_GET,$_POST,$_COOKIE數據進行轉義,在不知情的情況下,再次進行手動轉義的話,就轉多了,要想合理的進行轉義,就要首先判斷,魔術符號是否已經打開了,用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');
  }

上述內容就是使用php怎么實現sql注入與轉義,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀远县| 安远县| 太原市| 荔浦县| 上高县| 都安| 板桥市| 道孚县| 枞阳县| 浦江县| 亚东县| 平原县| 白银市| 龙陵县| 宝清县| 靖边县| 怀柔区| 缙云县| 河池市| 宜良县| 安化县| 尚义县| 泽普县| 甘谷县| 左贡县| 砚山县| 赤水市| 明溪县| 抚顺县| 高尔夫| 泸州市| 古田县| 台北县| 增城市| 玛沁县| 安阳市| 九龙城区| 镇雄县| 勃利县| 田东县| 策勒县|