2015-08-23 32 views
0

在我的應用的註冊頁面上,有一個用戶名字段。我想阻止SQL注入攻擊,同時允許複製名稱,如Aldéric D'Aurve-Sanct,其中包含單引號用作撇號。SQL白名單安全

如果我使用regex string like this one將名稱列入白名單,那麼我可以使用雙引號(在名稱中不允許使用)來完全轉義字符串嗎?換句話說,使用包含單引號的字符串是安全的,但是當用雙引號包圍時,不能使用其他控制字符?這種簡單的解決方案可能會引入哪些漏洞?

注意:我不想在此實例中使用預準備語句。

+5

爲什麼你不想*在這種情況下使用預準備語句? – Jimbo

+0

只需正確地逃避犯規角色。 –

+0

使用準備好的語句將涉及重做很多代碼,所以我正在尋找一種更簡單的方法,它仍然相當安全。 – Reubend

回答

1

如果你真的不能使用準備好的語句,永遠不要逃脫你自己,有功能可以做到這一點,如果你需要它。

例如,如果您使用PHP PDO,使用PDO ::報價:https://secure.php.net/manual/en/pdo.quote.php

但是,使用預準備語句如果可能的話:

  • 無需黑名單
  • 沒有必要逃避
  • 無注射風險
  • 一切皆準許