从文本框验证到防止sql注入

时间:2012-10-09 22:11:23

标签: security sql-injection

有什么特色;出于安全原因,我不应允许用户输入文本框字段。

2 个答案:

答案 0 :(得分: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
 } 

<强>爪哇

 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 Sheet了解更多预备语句示例和OWASP Input Validation Cheat Sheet以了解有关白名单的更多信息。

答案 1 :(得分:0)

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

大多数情况下,'(单引号)和“(双引号)会带来麻烦而无法逃脱。