-3

什么是特殊字符;出于安全原因,我不应该允许用户在文本框字段中输入。

4

2 回答 2

6

通过使用如下准备好的语句,可以更可靠地防止 SQL 注入。如果您不能使用此模式,那么第二好的方法是将好的字符“列入白名单”,而不是将禁止的字符“列入黑名单”。

。网

 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
 } 

爪哇

 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 注入预防备忘单以获取更多准备好的语句示例和OWASP 输入验证备忘单,以了解有关白名单的更多信息,如果您绝对设置为白名单/黑名单。

于 2012-10-09T22:16:08.797 回答
0

mysql_real_escape_string($string) (PHP) 将为您完成这项工作。您不必过滤数据。

大多数情况下 ' (单引号)和 " (双引号)会在没有转义的情况下带来麻烦。

于 2012-10-09T22:15:51.967 回答