sql >> データベース >  >> RDS >> Oracle

DBMS_ASSERTを使用したOracleSQLインジェクションブロック

    query_string := 'SELECT '||dbms_assert.qualified_sql_name(trim(from_schema||'.'||from_table||'.'||return_field))|| 
                       ' FROM '||dbms_assert.schema_name(trim(from_schema))||
                            '.'||dbms_assert.sql_object_name(trim(from_table))||  
                      ' WHERE '||dbms_assert.qualified_sql_name(from_schema||'.'||from_table||'.'||key_field) || ' = '||key_value;
    
    
    
     EXECUTE IMMEDIATE query_string into return_result;
    

    ドキュメントから..

    • ENQUOTE_LITERAL-文字列リテラルを引用します
    • ENQUOTE_NAME-名前を二重の引用符で囲みます
    • NOOP-チェックせずに値を返します
    • QUALIFIED_SQL_NAME-入力文字列が修飾されたSQL名であることを確認します
    • SCHEMA_NAME-関数入力文字列が既存のスキーマ名であることを確認します
    • SIMPLE_SQL_NAME-入力文字列が単純なSQL名であることを確認します
    • SQL_OBJECT_NAME-入力パラメータ文字列が既存のSQLオブジェクトの修飾されたSQL識別子であることを確認します



    1. Oracle 10のローカル一時テーブル(ストアドプロシージャの範囲用)

    2. MySQL構成変数の設定–MySQL5.7とMySQL8.0

    3. MySQLエラー1153-'max_allowed_pa​​cket'バイトより大きいパケットを取得しました

    4. Apache2、PHP5、およびMySQL4を使用してWindows XPにWebサーバーをインストールする–パート1