→ dododavid006: 上傳檔案的部份建議是用白名單比較安全 不然就是檔11/03 15:23
→ dododavid006: 案不可以放在可以直接下載的到的地方 要有另一個11/03 15:24
→ dododavid006: php 去拿檔案給你下載 另外這個 php 又要注意不能有11/03 15:24
→ dododavid006: 能使用 ../ 之類的漏洞 比較好的做法是每個檔案給一11/03 15:25
→ dododavid006: 個 id 用 id 去對應實際的檔案 而不要在網址內有檔11/03 15:26
→ dododavid006: 案路徑11/03 15:26
推 GALINE: 不要用 addslashes 做 sql 跳脫(這東西對熟手沒用)11/03 15:36
冒昧請教一下,
為什麼addslashes對SQL Injection無效?
如果我的PHP變數都嵌入在SQL語法的字串型態當中,
也就是像這樣:
$str="SELECT aaa,bbb FROM tableName WHERE aaa='".addslashes($a)."' AND bbb='".
addslashes($b)."'";
亦即 addslashes只用在SQL語法字串型態裡頭 (兩個單引號「'」之間)
那這樣是否可以使用addslashes?
另外,怎麼說addslashes對防止老手駭客無效呢?
謝謝
→ GALINE: 跳脫請用 mysql(i)_real_escape_string11/03 15:36
→ GALINE: 當然最好是用 prepared statement 去 bind 變數11/03 15:37
→ GALINE: 盡量不要自組SQL,雖然對老系統這有時等於是全部重寫...11/03 15:37
→ GALINE: 然後htmlspecialchars不該在存DB的時候做,是顯示時才做11/03 15:38
推 crossdunk: 我都不用addslashes而是用PDO加上prepared11/03 16:22
※ 編輯: red0whale (110.28.136.18), 11/03/2017 18:45:41
推 banqhsia: 永遠記得不要用直接使用者提供的任何東西,就算真的要 11/03 21:23
→ banqhsia: 也一定要跳脫。上傳的檔案,直接用 hash 產生檔名改名 11/03 21:23
→ banqhsia: ,限制上傳檔案的類型,然後強制改副檔名 11/03 21:23
推 nacoyow: 使用PDO +1 11/03 21:25
推 dou0228: PDO,寫一個類似ActiveRecord 的 class 做這事情 11/03 22:30
推 tkdmaf: 正確的使用PDO,你就沒煩沒惱了。 11/04 12:48
推 cd99cd99: 推薦使用PDO 11/06 08:43
→ MOONRAKER: 3DO 11/06 14:54
推 tkdmaf: ↑這傳說中的失敗作耶!但也間接造就了ps 11/06 22:46
→ MOONRAKER: 被發現了…沒錯!傳說中的無敵大爛作 ;) 11/08 17:05