SQL注入

SQL注入是對於使用SQL查詢的基於數據庫的應用程序而言的最大威脅之一,並且與輸入數據消毒聯繫在一起。 假設我們使用Node.js運行這樣一個簡單的查詢(這裡使用偽代碼): const color = //來自用戶輸入 const query = `select * from cars where color = '${color}'` 如果color是一個包含顏色(如red或blue)的字符串,一切正常運作。 但是如果你接受來自表單中input字段的字符串,並且攻擊者輸入字符串"blue';drop table cars;",你看到發生了什麼嗎? 現在query的值是: select * from cars where color = 'blue';drop table cars;' 如果你執行這個查詢,除非你在數據庫使用者的權限中移除了刪除表的選項,否則這將刪除所有數據。 再舉個例子。 假設你執行這樣一個查詢: const query = 'SELECT * FROM users where name = "' + name + '"' 如果你接受來自表單的name變量,並且沒有對其進行消毒,有人可能輸入以下值: flavio"; DELETE * FROM users; SELECT * FROM users where name ="flavio 看到了嗎?現在查詢變成了: SELECT * FROM users where name = "flavio"; DELETE * FROM users; SELECT * FROM users where name ="flavio" 這將導致用戶表被刪除。...