2015-08-30 80 views
-1

我在我的代碼中使用了mysql轉義字符串。我正在使用電子郵件地址並將它們存儲在數據庫中。這是我使用的轉義字符串函數。如何繞過mysql轉義字符串?

mysqli_real_escape_string($connection, $_POST['data']) 

但今天我看了一下數據庫,發現有人已經能夠插入像「C:/ Windows的/ XYZ」,SQL查詢等。這些都被列入數據庫。這是怎麼發生的,即使HTML不允許你輸入任何東西,除了一個正確的電子郵件地址?

+4

它不會刪除錯誤的數據。它只是防止它被解釋爲一個MySQL命令來防止SQL注入。 –

+0

而HTML5''只是瀏覽器的建議。其他機器人/蜘蛛可以忽略這一點。如果你想過濾/列入白名單的內容,你必須實現相應的邏輯服務器端,而不是依賴於兼容的客戶端。 – mario

+0

感謝您的意見。對約翰孔德的問題。當我瀏覽數據庫時,發現所有這些SQL查詢都是「1 AND 1 = 1」,甚至是Javascript查詢('') –

回答

-1

消毒和驗證變量之間存在巨大差異。衛生爲您的數據庫操作提供了SQL安全變量,但沒有人表示用戶無法在您的表單上訂購「波爾多」啤酒。

如果您想驗證正確的電子郵件地址字符串您可以使用filter_var($_REQUEST["email"], FILTER_VALIDATE_EMAIL)函數。