2

マネージドBeanのメソッドはJSFによって保護されていますか? コードを参照してください:

マネージド Bean

@ManagedBean
public class My {
    public void test() {
        System.out.println("called");
    }
}

XHTML

<h:form>
    <h:commandButton rendered="true" action="#{my.test}" value="Teste" />
</h:form>

ボタンがレンダリングされていない場合 (rendered="false")、HTTP POST 要求 (ボタンが行うように) を実行して、test() メソッドを呼び出すことができますか?

つまり、JSF は改ざんされたリクエストによるマネージド Bean メソッドの呼び出しを防止しますか?

4

1 に答える 1

1

つまり、JSF は改ざんされたリクエストによるマネージド Bean メソッドの呼び出しを防止しますか?

はい。

renderedJSF は、リクエスト値の適用フェーズ中にコンポーネントの属性を再評価します。の場合、(改ざんされた) HTTP 要求パラメーターがボタンが押されていることを示しているかどうかに関係なく、コンポーネントのfalse場合、は単純にキューに入れられません。UICommandActionEvent

disabledJSF には、および属性 (コンポーネントreadonlyの属性も含む)に対する改ざんされたリクエストに対する同様の保護機能がありUIInputます。また、UISelectOne/UISelectManyコンポーネントでは、JSF は、送信された値が提供された使用可能なオプションの一部であるかどうかを検証します。

JSF は、ビューステートの助けを借りてこれをすべて行います。JSF がステートレスである場合、これらの属性が突然ビュー スコープではなくリクエスト スコープになると、いずれかが失敗するリスクが高くなります。

以下も参照してください。

于 2015-08-13T14:32:53.483 に答える