サニタイジング

概要

x-Servlet では動的に生成されるURLパラメータ部や <input> で入力される値などWebサーバに対して不正な値が送られないようにサニタイジング(無害化)する機能があります。
ここではサニタイジングを行う各種設定について説明します。

設定

<input> で入力される値に対する設定

設定は xproxy.properties の inputValueSanitizing で行います。

リクエストパラメータとして渡される値に対する設定

設定は xproxy.properties の URISanitizing で行います。

動作

<input> で入力される値

携帯端末から <form> で送信された際、入力された値(value値)に対してサニタイジングを行います。

GET/POST 両方に対応し、以下の文字を特定文字に置き換えます。

  • 「<」→「&lt;」
  • 「>」→「&gt;」
  • 「'」→「&#39;」
  • 「"」→「&quot;」

サニタイズ対象となるフォーム要素は以下の通りです。

  • hidden
  • radio
  • select
  • textarea
  • text
  • password

リクエストパラメータとして渡される値

元コンテンツに記述されているリンク、および元コンテンツからのリダイレクトURLに対して以下の特定文字に置き換えます。

  • 「<」→「&lt;」
  • 「>」→「&gt;」
  • 「'」→「&#39;」
  • 「"」→「&quot;」

使用例

inputValueSanitizing 使用例

以下のような入力フォームを例とします。

コンテンツソース

<form method="post" action="t2r.html">
TEXT入力:
<input type="text" name="text1" size="30" value="">
<input type="SUBMIT" value="送信" name="SUBMIT1">
</form>

値を入力して送信します。

Webサーバへ送信されるデータ (inputValueSanitizing=false)

text1=%3C%22%83e%83L%83X%83g%22%3E&SUBMIT1=%91%97%90M

「<"テキスト">」が送信されます。

Webサーバへ送信されるデータ (inputValueSanitizing=true)

text1=%26lt%3B%26quot%3B%83e%83L%83X%83g%26quot%3B%26gt%3B&SUBMIT1=%91%97%90M

&lt;&quot;テキスト&quot;&gt;」が送信されます。


URISanitizing 使用例

以下のようなリンクが記述されたコンテンツを例とします。

<a href="<script>alert('script')</script>">

端末にレスポンスされるコンテンツ (URISanitizing=false)

<a href="<script>alert('script')</script>?_xpxi=~">

端末にレスポンスされるコンテンツ (URISanitizing=true)

<a href="&lt;script&gt;alert(&#39;script&#39;)&lt;/script&gt;?_xpxi=~">

注意点

  • inputValueSanitizing を有効にした結果、文字が置き換えられるため Webアプリケーション側ではエスケープされた「&lt;」などの文字を認識するようにして頂く必要があります。
    Webアプリケーション側で対応が難しい場合は inputValueSanitizing を false に設定して機能を無効にしてください。
  • サニタイズ対象文字以外の置き換え・削除は行いません。
  • <x:raw> を使用して変換対象から外している場合はサニタイズは行われません。
  • スルーモードの場合はサニタイズは行われません。
  • 本機能はWebアプリケーションの脆弱性を完全に回避するものではありません。
TOP