-3

特殊文字とは何ですか; セキュリティ上の理由から、ユーザーがテキスト ボックス フィールドに入力できないようにする必要があります。

4

2 に答える 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 に答える