特殊文字とは何ですか; セキュリティ上の理由から、ユーザーがテキスト ボックス フィールドに入力できないようにする必要があります。
1958 次
2 に答える
6
SQL インジェクションは、次のような準備済みステートメントを使用することで、より確実に防止できます。このパターンを使用できない場合、2 番目に良い方法は、禁止文字を「ブラック リスト」に登録する代わりに、適切な文字を「ホワイト リスト」に登録することです。
。ネット
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 に答える