程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql分頁負數sql攻擊

Mysql分頁負數sql攻擊

編輯:MySQL綜合教程

Mysql分頁負數sql攻擊


1 攻擊分析

CleverCode的運維同事給我說,他在查看mysql的錯誤日志的時候,發現有大量的下圖的錯誤,所以有人是在正對某個地址進行攻擊。大量出現這個錯誤的原因是mysql在limit不支持負數。通常我們分頁的時候,url一般都是寫成http://xxx.com?page=1&pageSize=20,即獲取第一頁數據。每頁20行。但是如果傳入的是http://xxx.com?page=-1&pageSize=20。就會出現以下錯誤。

\

2 有問題的PHP代碼

 

function getUserLoginLog($page,$pageSize){
    
    //參數檢查
    if(!is_int($page) || !is_int($pageSize)){
        return;
    }
    
    $start = ($page - 1) * $pageSize; 
    $sqlStr = "select * from user_login_log order by id desc limit $start,$pageSize";
    //執行sql語句
    //.....    
    
    //如果page=-1,pageSize=20,以上語句就會變成
    //$sqlStr = "select * from user_login_log order by id desc limit -40,20";
       
}

3 防止攻擊的PHP代碼

只需要判斷$page,$pageSize為正整數即可。

 

function getUserLoginLog($page,$pageSize){
    
    //參數檢查
    if(!is_int($page) || !is_int($pageSize)){
        return;
    }
    
    //正整數檢查
    if($page < 1 || $pageSize < 1){
        return;
    }
    
    $start = ($page - 1) * $pageSize; 
    $sqlStr = "select * from user_login_log order by id desc limit $start,$pageSize";
    
    //執行sql語句
    //.....    
          
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved