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

看板PHP作者 (red whale)時間7年前 (2017/11/03 14:14), 7年前編輯推噓8(8015)
留言23則, 10人參與, 7年前最新討論串1/2 (看更多)
我們在使用MySQL時都會注意SQL Injection和防止網頁代碼注入 也就是會使用addslashes和htmlspecialchars函數 在使用MySQL時除了要注意這兩點之外 還有沒有其他需要注意的? 另外, 在寫上傳檔案的PHP程式時, 有時候為了防止使用者上傳PHP檔以攻擊伺服器內部而會阻止以「.php」為副檔名的檔案 除此之外,是否還有其他須注意的地方? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.121.238 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1509689691.A.10C.html ※ 編輯: red0whale (220.136.121.238), 11/03/2017 14:16:30

11/03 15:23, 7年前 , 1F
上傳檔案的部份建議是用白名單比較安全 不然就是檔
11/03 15:23, 1F

11/03 15:24, 7年前 , 2F
案不可以放在可以直接下載的到的地方 要有另一個
11/03 15:24, 2F

11/03 15:24, 7年前 , 3F
php 去拿檔案給你下載 另外這個 php 又要注意不能有
11/03 15:24, 3F

11/03 15:25, 7年前 , 4F
能使用 ../ 之類的漏洞 比較好的做法是每個檔案給一
11/03 15:25, 4F

11/03 15:26, 7年前 , 5F
個 id 用 id 去對應實際的檔案 而不要在網址內有檔
11/03 15:26, 5F

11/03 15:26, 7年前 , 6F
案路徑
11/03 15:26, 6F

11/03 15:36, 7年前 , 7F
不要用 addslashes 做 sql 跳脫(這東西對熟手沒用)
11/03 15:36, 7F
冒昧請教一下, 為什麼addslashes對SQL Injection無效? 如果我的PHP變數都嵌入在SQL語法的字串型態當中, 也就是像這樣: $str="SELECT aaa,bbb FROM tableName WHERE aaa='".addslashes($a)."' AND bbb='". addslashes($b)."'"; 亦即 addslashes只用在SQL語法字串型態裡頭 (兩個單引號「'」之間) 那這樣是否可以使用addslashes? 另外,怎麼說addslashes對防止老手駭客無效呢? 謝謝

11/03 15:36, 7年前 , 8F
跳脫請用 mysql(i)_real_escape_string
11/03 15:36, 8F

11/03 15:37, 7年前 , 9F
當然最好是用 prepared statement 去 bind 變數
11/03 15:37, 9F

11/03 15:37, 7年前 , 10F
盡量不要自組SQL,雖然對老系統這有時等於是全部重寫...
11/03 15:37, 10F

11/03 15:38, 7年前 , 11F
然後htmlspecialchars不該在存DB的時候做,是顯示時才做
11/03 15:38, 11F

11/03 16:22, 7年前 , 12F
我都不用addslashes而是用PDO加上prepared
11/03 16:22, 12F
※ 編輯: red0whale (110.28.136.18), 11/03/2017 18:45:41

11/03 21:23, 7年前 , 13F
永遠記得不要用直接使用者提供的任何東西,就算真的要
11/03 21:23, 13F

11/03 21:23, 7年前 , 14F
也一定要跳脫。上傳的檔案,直接用 hash 產生檔名改名
11/03 21:23, 14F

11/03 21:23, 7年前 , 15F
,限制上傳檔案的類型,然後強制改副檔名
11/03 21:23, 15F

11/03 21:25, 7年前 , 16F
使用PDO +1
11/03 21:25, 16F

11/03 22:30, 7年前 , 17F
PDO,寫一個類似ActiveRecord 的 class 做這事情
11/03 22:30, 17F

11/04 12:48, 7年前 , 18F
正確的使用PDO,你就沒煩沒惱了。
11/04 12:48, 18F

11/06 00:59, 7年前 , 19F

11/06 08:43, 7年前 , 20F
推薦使用PDO
11/06 08:43, 20F

11/06 14:54, 7年前 , 21F
3DO
11/06 14:54, 21F

11/06 22:46, 7年前 , 22F
↑這傳說中的失敗作耶!但也間接造就了ps
11/06 22:46, 22F

11/08 17:05, 7年前 , 23F
被發現了…沒錯!傳說中的無敵大爛作 ;)
11/08 17:05, 23F
文章代碼(AID): #1P_0bR4C (PHP)
文章代碼(AID): #1P_0bR4C (PHP)