2012-10-09 26 views
-2

什麼是特殊字符;出於安全原因,我不應該允許用戶在文本框字段中輸入。從文本框驗證防止sql注入

+0

查看SQL特殊字符:http://stackoverflow.com/questions/712580/list-of-special-characters-for-sql-like-clause – Gareth

回答

0

mysql_real_escape_string($ string)(PHP)將爲您完成這項工作。您不必過濾數據。

晴的'(單引號)和「(雙引號)會給煩惱沒有逃逸。

+0

謝謝Jordi,所有的後端部分都很好。這是我問的一般問題,如果我需要做驗證。我不應該允許進入的角色是什麼?下列人物如何,他們可以/ \:? []; – skystar

6

SQL注入可以更可靠地使用準備好的語句像下面的。如果你不能使用這種模式可以防止,第二個最好的方法是「白名單」的良好字符,而不是「黑名單」禁止的字符。

.NET

String query = 
    "SELECT account_balance FROM user_data WHERE user_name = ?"; 
try { 
    OleDbCommand command = new OleDbCommand(query, connection); 
    command.Parameters.Add(new OleDbParameter("custrName", CustName Name.Text)); 
    OleDbDataReader reader = command.ExecuteReader(); 
    // … 
} catch (OleDbException se) { 
    // error handling 
} 

的Java

String custname = request.getParameter("customerName"); 
String query = "SELECT account_balance FROM user_data WHERE user_name = ? "; 

PreparedStatement pstmt = connection.prepareStatement(query); 
pstmt.setString(1, custname); 
ResultSet results = pstmt.executeQuery(); 

您可以準備語句的更多例子諮詢OWASP SQL Injection Prevention Cheat SheetOWASP Input Validation Cheat Sheet瞭解更多關於白名單,如果你絕對的白名單/黑名單設置。