資料載入中

我是 chung

鎖住記憶

  • Chung
  • 0°C
  • 11 年又 258 天

關於資安防護

一直以來我都不敢寫跟資安有關的文章..對我來說...資安一直是一個課題..XSS...CSRF...SQL Injection....

而我也不是這方面的專家...這次只當是將自己的作法紀錄下來提醒自己注意...

這3天接到了一個專案任務...朋友客戶的網站系統出現資安漏洞...

以往在解決資安問題時...每次都會讓我苦腦很久...不知為什麼就是會有幾個地方抓很久抓不到...@@

接著就是解決方式了...

首先我得先把客戶的網站系統用FTP抓下來...想說就連著讓他抓...怎知一直抓都抓不完全..還會被我的防毒軟體發出警告...

原來這網站系統已經不是有資安漏洞而已...而是程式碼早已被竄改並植入後門...

不得已只好關了防毒軟體把檔案抓下來..一支一支先清除被植入的code...

然後再架設在虛擬空間..開始修補大工程...

白話來說..會產生資安漏洞的疑慮就是操作端在對server端發出請求時..被植入不該有的程式碼..

造成資料庫資料被竊取...又或者造成資料庫資料被竄改...甚至整個網站server癱瘓...這是非常嚴重的問題..

因此我們必須在操作端發出請求時....接收端要接收到完整且沒被竄改也沒被植入特殊符號的value

那麼我的做法會有以下幾種:

若使用 $_SERVER["REQUEST_URI"]取得當前頁面時
應該改成 htmlEntities($_SERVER['REQUEST_URI'], ENT_QUOTES, "UTF-8") 取得當前頁面

過濾字串方面

若使用$_GET $_POST $_REQUEST接收請求時應該要過濾特殊字元或符號
使用 mysql_escape_string 或 htmlspecialchars

mysql_real_escape_string()函數轉義SQL語句中使用的字符串中的特殊字符。
使用方式為mysql_real_escape_string($value)

用htmlspecialchars()函數把一些預定義的字符轉換為HTML實體。

& (和號) 成為 &
" (雙引號) 成為 "
' (單引號) 成為 '
< (小於) 成為 <
> (大於) 成為 >

使用方式為htmlspecialchars(string,quotestyle,character-set)

替代字串方面

列出可能會有問題的一些字串符號
$search=array("-","(",")","~","'","or","and","OR","=","execute","update","count","chr","mid","master","truncate","char","declare","select","create","delete","insert","%20");
把這些可能會有問題的一些字串符號替換成什麼內容?...這邊我是全都替換成空值...
$replace=array("","","","","","","","","","","","","","","","","","","","","","","");
$search 跟 $replace 陣列數需相對應..接著以下
$value=str_replace($search, $replace,htmlspecialchars($value));
完成替換..過濾掉有問題的符號...

請求查詢資料庫方面..使用參數化查詢...這邊用的是擬參數化查詢..也能有成效

將原本的查詢方式 $sql="select * FROM table where id='$value'"
改成 $sql=sprintf("select * FROM table where id='%s'",mysql_real_escape_string($value));
如果是查相似值
將原本的查詢方式 $sql="select * FROM table where id LIKE '%$value%'"
改成 $sql=sprintf("select * FROM table where id LIKE '%%%s%%'",mysql_real_escape_string($value));

Apache設定方面

將 AcceptPathInfo 設為 off

最後我用Acunetix Web Vulnerability Scanner 9.5 來做弱點掃瞄..確認已修補

當然...解決的方法有很多....重點就是不要讓操作端植入可以執行的程式碼......

資安一直是一個課題...

  • 資安漏洞修補的實務經驗
  • 網站系統程式碼被竄改的情況
  • 如何避免資料庫資料被竊取
  • 使用參數化查詢提升資安
  • Acunetix Web Vulnerability Scanner 使用心得
https://innstory.com/story-關於資安防護-298

上一篇
 PHP自動補零

下一篇
婚宴 

發表留言

作者簡介

我是chung,網路工作者

主業是網站系統開發建置
副業是做夢、紀錄故事
作品請參考:teme.biz
做夢請參考:innstory.com
聯絡:chung.teme@gmail.com

有人用筆寫日記,有人用歲月寫日記,有人用照片寫日記,而我,用innstory寫日記。


推薦閱讀

作者其他相關類別故事

圖文穿插效果

圖文穿插效果

Chung 11 年又 170 天 1.9K

寫故事還是得圖文穿插看起來方便些~ 其實一直都在找最適合寫故事的方式,一開始我把所有上傳照片都放在故...

親愛的孩子祝你10歲生日快樂

親愛的孩子祝你10歲生日快樂

Chung 2026-04-19 下午 10 點 752

親愛的孩子,今天是你人生第一個「雙位數」生日,生日快樂哦! 很抱歉,這個特別的日子,我無法陪在...

Jammie?

Jammie?

Chung 2026-09-19 上午 9 點 346

家長日,來到5G的教室,第一眼就發現一件不得了的事...她改名了! 我們不是幫她取了英文名叫 All...