[請益] 解決Blind SQL injection的問題
大家好
我原本一直以為要解決SQL injection就是把參數都做過一番處理
把可能造成問題的字元字串都清除掉就沒事了
怎知最近收到資安報告有3個程式都說有Blind SQL injection的高風險存在
這3個程式共同點就是都沒有任何參數(也就是$_GET[]是empty、QUERY_STRING是'')
報告中的測試語法是:
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML,
like Gecko) Chrome/41.0.2228.0 Safari/537.21
X-Forwarded-For: 0'XOR(if(now()=sysdate(),sleep(0),0))XOR'Z
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Accept: */*
Accept-Encoding: gzip,deflate
Host: xxx.xxx.xxx.xxx
坦白說....我看不太懂
是指駭客可以用XFF寫入這串語法造成程式無法執行嗎@@
但目前查了一下相關資料似乎大部分
先不論在XFF自行輸入這串語法透過HTTP會造成什麼樣的作用
但如果這是問題來源
我目前規劃的解決方式有幾種,但不曉得到底方向正不正確,所以想請教大家:
方案1:
先檢查 $_SERVER["HTTP_X_FORWARDED_FOR"] 看有沒有亂七八糟的字串
理論上應該都是IP(也就是必須一定是 [數值.數值.數值.數值] 的格式)
如果不是就一律封殺
不曉得會不會有什麼副作用反而連不該封殺的也封殺了?
還有Header裡面除了XFF是不是其他地方也必須有此防範?
方案2:
檢查 QUERY_STRING 看是不是空白或者 $_GET 是不是empty
不是的話也一律封殺
(雖然這樣做好像沒有意義 因為原本這些程式就完全沒有處理參數?)
以上問題還請大家指教和指正
也謝謝大家耐心看完
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.101.142
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1557956749.A.975.html
※ 編輯: techcrpa (140.124.101.142), 05/16/2019 06:15:11
→
05/16 10:58,
5年前
, 1F
05/16 10:58, 1F
推
05/16 12:52,
5年前
, 2F
05/16 12:52, 2F
→
05/16 13:48,
5年前
, 3F
05/16 13:48, 3F
推
05/16 14:05,
5年前
, 4F
05/16 14:05, 4F
推
05/16 16:25,
5年前
, 5F
05/16 16:25, 5F
→
05/16 16:25,
5年前
, 6F
05/16 16:25, 6F
推
05/16 16:53,
5年前
, 7F
05/16 16:53, 7F
→
05/16 16:54,
5年前
, 8F
05/16 16:54, 8F
→
05/16 16:54,
5年前
, 9F
05/16 16:54, 9F
推
05/16 19:07,
5年前
, 10F
05/16 19:07, 10F
推
05/16 19:33,
5年前
, 11F
05/16 19:33, 11F
感謝st大!!!!
我的確忘了這件事@@
我修改完會去辨識是IPv4或IPv6這兩種回傳的IP了(還真的是有IPv6的來源...)
推
05/17 02:27,
5年前
, 12F
05/17 02:27, 12F
→
05/17 02:29,
5年前
, 13F
05/17 02:29, 13F
→
05/17 02:29,
5年前
, 14F
05/17 02:29, 14F
推
05/17 03:23,
5年前
, 15F
05/17 03:23, 15F
→
05/17 03:23,
5年前
, 16F
05/17 03:23, 16F
推
05/17 04:03,
5年前
, 17F
05/17 04:03, 17F
→
05/17 04:05,
5年前
, 18F
05/17 04:05, 18F
→
05/17 04:06,
5年前
, 19F
05/17 04:06, 19F
→
05/17 04:06,
5年前
, 20F
05/17 04:06, 20F
→
05/17 04:07,
5年前
, 21F
05/17 04:07, 21F
推
05/17 04:22,
5年前
, 22F
05/17 04:22, 22F
→
05/17 04:23,
5年前
, 23F
05/17 04:23, 23F
→
05/17 04:23,
5年前
, 24F
05/17 04:23, 24F
謝謝Crow大
這網頁超詳盡 這樣我完全明白了
目前已經都改成pdo的prepared statements了
謝謝大家的幫忙
※ 編輯: techcrpa (61.216.122.103), 05/20/2019 17:24:09
PHP 近期熱門文章
PTT數位生活區 即時熱門文章