什么是特殊字符;出于安全原因,我不应该允许用户在文本框字段中输入。
问问题
1958 次
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 回答