0

私は、HTTP ハンドラーを含む ASP.Net C# アプリケーション (私の最初の!) に取り組んでいます。私のアプリケーションは、URL 経由で渡されるいくつかのパラメーターを使用して動作します。私の質問は次のとおりです。

アプリケーションのエントリ ポイントは、HTTP ハンドラ経由です。ProcessRequest メソッドに入ると、URL パラメーターの値を変数に割り当てて、データを処理できるようにします。 質問: URL を呼び出すときに値を何も設定していなくても、これは安全ですか?

私の例では:私はhost/handler1.ashx代わりに呼び出しますhost/handler1.ashx?something=foo

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";

        string something = context.Request["something"];

        context.Response.Write("Hello World: " + something);
    }

パラメーターなしのプレーン URL を使用して上記のメソッドを呼び出すと、正常に実行されますが、文字列somethingは空白または null になります。

追加の質問: somethingURL を介して変数を明示的に初期化しない場合、変数はどうなりますか? null であることは理解していますが、これにより問題が発生する可能性はありますか?

プレーンな URL を呼び出すのは危険ですか、それとも安全ではありませんか (つまり、常にパラメーター値を指定して呼び出す必要がありますか)?

「クリーンな」ashx URL を呼び出してアプリケーションを起動するが、問題をリスクにさらさない最善の方法は何ですか?

アプリケーションは、値を蓄積し、クエリ文字列を介してアプリに戻すときに、一連の後続の GET リダイレクトを実行します。アプリケーションの最初の呼び出しで POST または GET を実行する必要がありますか?

同じ質問を複数の方法で質問して申し訳ありませんが、トピックについて少し混乱しています。このようなアプリを作成するのはこれが初めてです。パラメータを安全に処理および初期化する方法について、忍耐とアドバイスをいただければ幸いです。

4

2 に答える 2

1

エンドポイントへのパラメーターを省略しても問題はありません。あなたは開発者として、クライアントがあなたに送信できるものを強制する責任があります。必要なパラメーターが見つからない場合は、エラーをスローします (例: HttpException)。

データを作成または更新する (つまり、データベースにレコードを挿入または更新する) 場合、最適な方法はPOSTまたはPUTです。

編集- 入力を処理する方法の例を次に示します。

public void ProcessRequest(HttpContext context) {
    //Maybe you require a value?
    if (string.IsNullOrEmpty(context.Request["something"])) {
        throw new HttpException(400, "You need to send a value!");
    }

    //Maybe you require a certain value?
    if (context.Request["something"] != "beerIsGood") {
        throw new HttpException(400, "You need to send the right value!");
    }
}
于 2013-09-13T19:22:12.413 に答える
0

できません。インターネットは危険です。

于 2013-09-13T19:30:14.683 に答える