パラメータインジェクション対策

ASPシステムで予約された引数のIDがアクセス可能であるか全ページ実装する必要があったので。

<?php
protected function is_enable_id()
{
    /*
     * ターゲットリスト
     * html_element_name => target_method_name
     */
    $target_id_elements = array(
        "a_id" => "ebanble_a_id",
        "b_id" => "ebanble_b_id",
        "c_id" => "ebanble_c_id",
    );

    foreach( $target_id_elements as $key => $func_name)
    {
        //引数がない場合は実施しない
        $id = $_REQUEST[$key];
        if( $id == "" ){
            continue;
        }
        if( ! $func_name( $id ) ){
            return false;
        }
    }
    return true;
}

function ebanble_a_id($a_id){}
function ebanble_b_id($a_id){}
function ebanble_c_id($a_id){}

でこれをメインルーチンに組み込む。

予想の斜め上で予約されたID以外を使用されていると、

$target_id_elements = array(
    "a_id" => "ebanble_a_id",
    "b_id" => "ebanble_b_id",
    "c_id" => "ebanble_c_id",
/*
+    "add_id" => "ebanble_add_id",
*/

と追加していく