記憶加載中,請稍待...
Hello,你已經閒置了一些時間~
或許,你有興趣閱讀一篇故事:
JuilinChung
鎖住記憶
選擇大頭貼照
重新調整位置

關於資安防護

收藏小紙條

無法截取內容!!但仍舊可以收藏小紙條

2015-01-22 JuilinChung 158 0
一直以來都不敢寫跟資安有關的文章..對來說...資安一直是一個課題..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 來做弱點掃瞄..確認已修補

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

資安一直是一個課題...
L O A D I N G
閱讀分類:寫程式筆記  

其他您可能會有興趣的故事

婚宴
PHP自動補零

須同意使用 Email 才可進入此頁面

須同意使用 姓名 才可進入此頁面

須同意使用 性別 才可進入此頁面

須同意應用程式才能使用Facebook帳號進入此頁面

請重新登入!

Hi,謝謝你的參與,但無法重複投票哦~

Hi,請選擇一個你認為的答案

錯誤的URL...

執行錯誤...

別忘了填寫欄位...

輸入格式錯誤...

Email已經有人使用...

請填寫Email...

請填寫正確的Email...

密碼裡需包含英文字及數字8至12...

確認密碼是否與密碼相同...

很抱歉 您並沒有權限!請確認您的帳號密碼 或請連絡我們

正在更新排序...

帳號已經存在!請確認您的帳號密碼 或請連絡我們...