2013/12/01

如何寫出安全的PHP網站

網站安全那些大小事

如果你正在學習使用PHP(其實任何語言都通用)開發網站...
請務必要注意到安全性的問題
特別是有開放留言、註冊功能之類的網站!

有留言板,就有人想 <script> ...
有登入系統,就有人想 'or''=' ...

可以寫<script>的留言板,黑客就可以偷走你的cookie
甚至偷走你的密碼,進入後台搞破壞
萬一你的密碼是萬用密碼,拿到之後每個網站都可以登入
那你就損失慘重了!

至於可以寫單引號的系統呢?
如果你寫了...

$query = mysql_query("DELETE FROM `messages` WHERE " .
                     "`mid` = '{$_POST['id']}' AND " .
                     "`del_code` = '{$_POST['code']}'");

像這樣具有刪除留言功能的留言板
那麼我只要搞破壞,在code欄位輸入了 ' or '' = ' ...
整個 SQL 命令就會變成

DELETE FROM `messages` WHERE `mid` = '' AND `del_code` = '' or '' = ''

看清楚了嗎?

or '' = ''

然後你整張資料表的內容就...
萬一這是使用者刪除帳號的功能呢?

只要把握一個原則,就可以寫出很安全的網頁