1

Primefaces 3.5.10、Mojarra 2.1.21、Omnifaces 1.5

セキュリティの問題を考えています。

component.getAttributes() メソッドでコンポーネント属性を設定します。このメソッドは、属性を持つ HashMap を返します。このマップで ("disabled", true)-pair を設定してコンポーネント (p:inputText-component など) を無効にしても安全ですか? jsf パイプラインの actionListener (フェーズ 5 または 4) から使用します。そのため、レンダリング フェーズのみに影響を与える可能性があります。しかし、クライアントの入力メソッドから無効化された属性を操作し、操作された値を投稿することができました。サーバーは、コンポーネントが無効になっていて変更を拒否するかどうかをテストしますか?

最善の方法は何ですか?

panelGrid のすべてのコンポーネントが無効になります:

xhtml:
<p:panelGrid>
  <my:component/>
  <p:input value=#{mybean.value} />
</p:panelGrid>

Bean:

for (UIComponent component : l) {
  component.getAttributes().put("disabled", true);

  recursion(....);
}
4

1 に答える 1

1

しかし、クライアントの入力メソッドから無効化された属性を操作し、操作された値を投稿することができました。

はい、エンドユーザーは可能です。


サーバーは、コンポーネントが無効になっていて変更を拒否するかどうかをテストしますか?

はい、JSF は、送信された値ではなく、コンポーネント ツリーの状態に基づいてそれを行います。だからその部分は安全です。ちなみにreadonlyと属性についてもrenderedそうです。

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

于 2013-08-16T13:19:47.520 に答える