以 MySQL 為例,如何進行 SQL 注入和防止被注入?

時間 2021-06-02 00:21:56

1樓:魚有鹽

MySQL為例,現在專案大部分都用框架實現,比如MyBatis框架,輕量級,功能強大:

在MyBatis中,如果寫$,則為直接把傳入的值填充到SQL語句中;

如果寫#,則為傳入的值只能作為值,放到SQL語句中。

舉例:DELETE FROM student WHERE name=$

如果這樣寫,假如使用者惡意傳入這樣乙個字串:abc OR 1=1,那麼整個SQL就變成了

DELETE FROM student WHERE name=abc OR 1=1,結果就是全部資料都刪掉了。

2樓:

1、不要隨意開啟生產環境中Webserver的錯誤顯示。

2、永遠不要信任來自使用者端的變數輸入,有固定格式的變數一定要嚴格檢查對應的格式,沒有固定格式的變數需要對引號等特殊字元進行必要的過濾轉義。

3、使用預編譯(Prepare)繫結變數的SQL語句。

4、做好資料庫帳號許可權管理。

5、嚴格加密處理使用者的機密資訊。

來自 「Web安全之SQL注入技巧與防範」。

3樓:淪淪

引數進行轉義與過濾比較如$id=stripslashes($id);$id=mysql_real_escap_string($id)

4樓:Dion

最好的解決方案,就是用 Prepare Statement。

可以參考:

我的回答裡面也列舉了它的各種優缺點。

如何進行人生規劃以順利移民?

自學法語,本科畢業,一年工作,法語b2,雅思8777.加拿大聯邦技術移民,便宜,省時,就是要學法語。英語好的話學法語沒問題。 Lusi WPG 既然你已經現在移民目的已經十分明確了,我的建議是盡快辦理,不要等到研究生階段再辦理。首先,你目前才高三,如果要等到研究生階段,那起碼至少是4年之後了。到時候...

以23歲的年紀,如何進行鋼琴學習?

la ga 樓主面臨的考驗之一,基本練習的枯燥和練琴時間。技術和熱情是兩碼事,雖然熱情是練習的動力,但是想要彈奏出優美的樂曲關鍵還是取決於硬體。但是無疑,沒有壓力的熱情能在一定程度上緩解練琴多動症。保證練琴時間很重要,如果不能保證,起碼每天碰一下,如果覺得實在枯燥,換首曲子單手練,別和自己較沒意義的...

以AlphaGo為例,如何理解神經網路的儲存容量 storage capacity ?

神經網路當然沒有儲存所有局面的情況。它學習的人類棋譜和它的自我對局共同組成了它的經驗,至於經驗以外的局面怎麼應對要靠舉一反三,也就是泛化。不過神經網路的儲存容量是個很有意思的問題。比如說,可以考慮一定規模的神經網路,可以學習多大容量的訓練資料。當訓練好的神經網路受到一定損傷,又會失去多少習得的規矩。...