[請益] 使用MySQL除了注意這些之外…

作者: red0whale (red whale)   2017-11-03 14:14:48
我們在使用MySQL時都會注意SQL Injection和防止網頁代碼注入
也就是會使用addslashes和htmlspecialchars函數
在使用MySQL時除了要注意這兩點之外
還有沒有其他需要注意的?
另外,
在寫上傳檔案的PHP程式時,
有時候為了防止使用者上傳PHP檔以攻擊伺服器內部而會阻止以「.php」為副檔名的檔案
除此之外,是否還有其他須注意的地方?
謝謝
作者: dododavid006 (朔雪)   2017-11-03 15:23:00
上傳檔案的部份建議是用白名單比較安全 不然就是檔案不可以放在可以直接下載的到的地方 要有另一個php 去拿檔案給你下載 另外這個 php 又要注意不能有能使用 ../ 之類的漏洞 比較好的做法是每個檔案給一個 id 用 id 去對應實際的檔案 而不要在網址內有檔案路徑
作者: GALINE (天真可愛CQD)   2017-11-03 15:36:00
不要用 addslashes 做 sql 跳脫(這東西對熟手沒用)跳脫請用 mysql(i)_real_escape_string當然最好是用 prepared statement 去 bind 變數盡量不要自組SQL,雖然對老系統這有時等於是全部重寫...然後htmlspecialchars不該在存DB的時候做,是顯示時才做
作者: crossdunk (推噓自如)   2017-11-03 16:22:00
我都不用addslashes而是用PDO加上prepared
作者: banqhsia (BEN)   2017-11-03 21:23:00
永遠記得不要用直接使用者提供的任何東西,就算真的要也一定要跳脫。上傳的檔案,直接用 hash 產生檔名改名,限制上傳檔案的類型,然後強制改副檔名
作者: nacoyow (夢遊上班族)   2017-11-03 21:25:00
使用PDO +1
作者: dou0228 (7777)   2017-11-03 22:30:00
PDO,寫一個類似ActiveRecord 的 class 做這事情
作者: tkdmaf (皮皮快跑)   2017-11-04 12:48:00
正確的使用PDO,你就沒煩沒惱了。
作者: MangoTW (不在線上)   2017-11-06 00:59:00
作者: cd99cd99 (查爾斯)   2017-11-06 08:43:00
推薦使用PDO
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-11-06 14:54:00
3DO
作者: tkdmaf (皮皮快跑)   2017-11-06 22:46:00
↑這傳說中的失敗作耶!但也間接造就了ps
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-11-08 17:05:00
被發現了…沒錯!傳說中的無敵大爛作 ;)

Links booklink

Contact Us: admin [ a t ] ucptt.com