0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visualforce脆弱性について

Last updated at Posted at 2022-01-17

##本文にてApexサーバ側のデータをVisualforce画面に表示する時の脆弱性を整理する。

##Apexサーバ側のデータをVisualforce画面に表示する方法

◆従来のJSを利用すること

つまり、VisualforceのHiddenタグを定義して、JSやjQueryを利用して値を取得する

testVFPage1.html
<apex:inputHidden id="testId" value="{!testApexValue}" />
<script>
function getValue() {
    console.log($('id$=testId').val());
}
</script>

◆Visualforce独自な値取得方法を利用すること

つまり、VisualforceのHiddenタグを定義しなくても、{!$component.XXXX}を利用してサーバ側のデータが参照できること。

testVFPage2.html
<script>
function getValue() {
   // Hidden項目を定義しない
    console.log('{!$component.testApexValue}');
}
</script>

##脆弱性になるパターン
◆上記の2つの方法は特に脆弱性にならないです。
◆上記の2つコードを混ぜて実装する場合、脆弱性になる!!!

testVFPage3.html
<!-- Hidden項目を定義する -->
<apex:inputHidden id="testId" value="{!testApexValue}" />
<script>
function getValue() {
    console.log('{!$component.testApexValue}');
}
</script>

##解決案
一つの項目について、Hiddenタグと{!$component.XXXX}を同時に利用しないように注意しましょう。
・Hiddenを定義する場合、JSの中に{!$component.XXXX}を利用しないこと。従来のJSを利用して値を取得すること。
・JSの中に{!$component.XXXX}を利用する場合、Hiddenを定義しないこと。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?