作者:
red0whale (red whale)
2017-11-03 14:14:48我們在使用MySQL時都會注意SQL Injection和防止網頁代碼注入
也就是會使用addslashes和htmlspecialchars函數
在使用MySQL時除了要注意這兩點之外
還有沒有其他需要注意的?
另外,
在寫上傳檔案的PHP程式時,
有時候為了防止使用者上傳PHP檔以攻擊伺服器內部而會阻止以「.php」為副檔名的檔案
除此之外,是否還有其他須注意的地方?
謝謝
上傳檔案的部份建議是用白名單比較安全 不然就是檔案不可以放在可以直接下載的到的地方 要有另一個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的時候做,是顯示時才做
我都不用addslashes而是用PDO加上prepared
永遠記得不要用直接使用者提供的任何東西,就算真的要也一定要跳脫。上傳的檔案,直接用 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作者:
tkdmaf (皮皮快跑)
2017-11-06 22:46:00↑這傳說中的失敗作耶!但也間接造就了ps