$id = $_GET['id'];
$id = str_replace("'", "", $id);
$sql = "select name from test where id='$id'";
$stmt = $conn->query($sql);
由於上面的php代碼片段,它將用戶輸入中的所有單引號刪除,然後將其放在sql查詢中,它從用戶獲得的whaterver無法從引用周圍轉義出來,似乎從sql注入安全。我很好奇如何注入SQL代碼。從用戶輸入中刪除所有引號是否安全注入?
一些問題說關於轉義報價,它有實例來利用它。但在我的場合,刪除所有報價是不是真的一樣轉義。
我知道有參數化查詢防止sql注入的方法。是的,單引號可能包含在合法數據中。我在求助於SQL注入時出於好奇而問這個問題,我只想知道是否有任何例子可以利用這些代碼?
如果你正在考慮這樣做,不要。 *已知安全*防止SQL注入的方法是使用參數,並且很好的任何語言綁定這些天將有一些手段提供參數。任何其他地方,即使沒有人能夠*展示*今天的特定漏洞,您仍然在混合使用*數據*和*代碼*通過字符串連接是*潛在*易受攻擊的。 –
當然,更不用說,*引號字符可能是合法的數據*。告訴某人他的姓氏不允許成爲「O'Brien」就行不通。 –
http:// stackoverflow。com/questions/5520840/sql -injection-after-removed-all-single-quotes-and-dash-characters –