Loading...

關於資安防護

Temperature: 0 °C

ChungChung
author_tools

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

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

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

https://innstory.com/story-關於資安防護-298
寫程式筆記

Prev
 PHP自動補零

Next
婚宴 

About the Author

Chung

我是chung
網路工作者
主業是網站系統開發建置
副業是做夢,寫故事
作品請參考/teme.biz
做夢請參考/innstory.com
聯絡/chung.teme@gmail.com

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

Visitor message

Leave some footprints to prove that you visited me

Recommended reading

Author's other related stories

DIV區塊內文字左右對齊?

DIV區塊內文字左右對齊?

最近常接到一些英文網站建置的專案....為了讓內容文字能夠左右對齊... 所以我用了以下方式 div...

PHP 如何檢測陣列是否有重複值

PHP 如何檢測陣列是否有重...

pexelsphoto55 PHP陣列,是在coding時常用到的儲存資料的方式。 但,若陣列中的資...

如何用javascript接收radio button被選取後的值

如何用javascript接...

剛剛竟然犯了最簡單的錯誤~ 而且還是在趕著時間的時候⊙⊙ 我竟然蠢到用接收input 的方式去接收 ...

Please select an option

error

Hi, thank you for your participation, but you cannot vote repeatedly~

Join innstory now and start recording your story.

"Innstory" is a place to store stories. We are committed to becoming a warm platform. Deepening the bonds between people is our direction.
We are convinced that the blockchain between people is not just a cold calculation. Join us now.

Wrong format