Sun Java System Portal Server Secure Remote Access 7.2 管理指南

HTML 內容的規則

可進一步將網頁上的 HTML 內容分類為屬性、表單或 Applet。同樣地,HTML 內容的規則可分類為:

HTML 內容的屬性規則

此規則可識別需重新寫入值的標籤屬性。屬性值可為簡單的 URL、JavaScript 或 DHTML 內容。例如:

此部分說明下列內容:

屬性規則語法

<Attribute name="attributeName" [tag="*" valuePatterns="" source="*" type="URL|DHTML|DJS"]/>

其中,

attributeName 為屬性名稱 (必須的)

tag 是屬性所屬的標籤 (可選,預設為 *,表示任何標籤)

valuePatterns 請參閱在規則中與式樣相符

source 指定定義此屬性的頁面的 URI (可選,預設為 *,表示在任何頁面中)

type 指定值的類型 (可選)。類型可能是:

URL - 簡單 URL (預設值)。

DHMTL - DHTML 內容。此類內容會以標準 HTML 內容的形式顯示,而且用於 Microsoft HTC 格式的檔案。

DJS - JavaScript 內容。所有 HTML 事件處理器,如 onClick 與 onMouseover,其 JavaScript 皆含有 HTML 屬性。

屬性規則範例

假設此網頁的基準 URL 是:

http://mymachine.intranet.com/mypage.html

網頁內容:

<a href="http://mymachine.intranet.com/mypage.html">

規則

<Attribute name="href"/>
或者
<Attribute name="href" tag="a"/>

輸出

<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>

描述

因為待重新寫入的 URL 已經是一個絕對 URL,因此只會將閘道 URL 前置於此 URL。

DJS 屬性範例

假設此網頁的基準 URL 是:

http://abc.sesta.com/focus.html

網頁內容:

<Form>

<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">

</Form>

規則

<Attribute name="onClick" type="DJS"/>
<Function type="URL" name="Check" paramPatterns="y,"/>

輸出

<Form>

<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q
gateway-URL
/http://abc.sesta.com/focus.html\q,\qfocus\q);return;">

</Form>

描述

重新寫入特定網頁內容需要兩個規則。第一個規則可識別 onClick JavaScript 記號。第二個規則可識別需重新寫入的 check 函數參數。在這種情況下,僅會重新寫入第一個參數,因為 paramPatterns 用值 y 取代了第一個參數。

出現 JavaScript 記號的閘道 URL 與網頁的基準 URL 會置於所需參數之前。

用於 HTML 內容的表單規則

使用者所瀏覽的 HTML 網頁可能包含表單。某些表單元素可能會將 URL 視為值。

本節分為下列部分:

表單規則語法

<Form name="form1" field="visit" [valuePatterns="" source="*"]/>

其中

name 為表單名稱 (必須的)

field 是表單中的欄位,需要重新寫入它的值 (必須的)

valuePatterns 請參閱在規則中與式樣相符

source 是 html 網頁的 URL,即呈現此表單定義之處 (可選,預設為 *,表示在任何網頁中)

表單規則範例

假設此網頁的基準 URL 是:

http://test.siroe.com/testcases/html/form.html

網頁內容

假設網頁的 URI 是 form.html 且位於伺服器的根目錄中。

<form name=form1  method=POST action=
"http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 value="0|1234|/test.html">
</form>

要重新寫入出現在 form1 中名為 abc1 的隱藏欄位值中的 /text.html,需要下列規則。

規則

<Form source="*/form.html" name="form1" 
field="abc1" valuePatterns="0|1234|"/>
<Attribute name="action"/>

輸出

<FORM name="form1" 
method="POST" action="gateway-URL/
http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 
value="0|1234|gateway-URL/
http://test.siroe.com/test.html">
</FORM>

描述

action 標記是使用某些已定義之 HTML 屬性規則所重新寫入的。

輸入標記屬性值的 value 的重新寫入方式如輸出中所示。已找出特定的 valuePatterns,然後即利用前置閘道 URL 及網頁的基準 URL 來重新寫入符合的 valuePatterns 後面的所有內容。請參閱在規則中與式樣相符

用於 HTML 內容的 Applet 規則

單一網頁可以包含許多 Applet,而每個 Applet 則可以包含許多參數。Rewriter 會利用 Applet 的 HTML 定義與規則中指定的值相符,然後修改作為 Applet 參數定義一部分呈現的 URL 值。此取代動作會在伺服器上進行,而非在使用者瀏覽特定網頁時進行。此規則可識別並重新寫入 HTML 內容中的 Applet 及物件標籤的參數。

本節分為下列部分:

Applet 規則語法

<Applet code="ApplicationClassName/ObjectID
" param="parametername" [valuePatterns="" source="*"] />

其中

code 是 Applet 或物件類別的名稱 (必須的)

param 是值需要重新寫入的參數的名稱 (必須的)

valuePatterns 請參閱在規則中與式樣相符

source 是包含 Applet 定義的網頁的 URL (可選,預設為 *,表示在任何網頁中)

Applet 規則範例

假設此網頁的基準 URL 是:

http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html

網頁內容:

<applet codebase="appletcode" code="
RewriteURLinApplet.class" archive="/test.jar">
<param name=Test1 value="/index.html">
</applet>

規則

<Applet source="*/rule1.html" code=
"RewriteURLin*.class" param="Test*"/>

輸出

<APPLET codebase="gateway-URL
/http://abc.siroe.com/casestudy/test/HTML/
applet/appletcode" code="RewriteURLinApplet.class"
 archive="/test.jar"><param name="Test1" value="
gateway-URL/http:
//abc.siroe.com/index.html">
</APPLET>

描述

將重新寫入 codebase 屬性,因為 <Attribute name="codebase"/>default_gateway_ruleset 中已定義的規則。

所有以 Test 開頭的參數都會被重新寫入。顯示 Applet 碼的網頁基準 URL 及閘道 URL 都會置於 params 標籤的 value 屬性之前。

在規則中與式樣相符

您可以使用 valuePatterns 欄位來與式樣相符,並識別需重新寫入之陳述式的特定部分。

若您指定 valuePatterns 作為規則的一部分,則會重新寫入所有位於符合之樣式後的內容。

請參考下列表單規則範例。

<Form source="*/source.html
" name="form1" field="visit
" [valuePatterns="0|1234|"]/>

其中

source 是顯示表單之 Html 網頁的 URL。

name 為表單名稱。

field 是表單中的欄位,需要重新寫入它的值。

valuePatterns 指出需重新寫入的字串部分。會重新寫入所有出現在 valuePatterns 之後的內容 (可選,預設為 "",表示需重新寫入完整值)

以 valuePatterns 格式指定特殊化字元

您可以透過以反斜線退出特殊化字元的方式來指定它們。例如:

<Form source="*/source.html " name="form1" field=" visit" [valuePatterns="0|1234| \\;original text|changed text"]/>

在 valuePatterns 中使用萬用字元

您可使用萬用字元星號 (*) 字元來完成用於重新寫入的式樣相符。

valuePatterns 欄位中,您不能僅指定一個 *。因為 * 表示包含所有文字的符合結果,這樣 valuePattern 後沒有文字。因此,Rewriter 沒有可重新寫入的文字。您必須利用其他字串與 * 連用,如 *abc。在這種情況下,即會重新寫入所有位於 *abc 之後的內容。


備註 –

規則中的任何欄位皆可使用萬用字元星號 (*)。但是規則中所有的欄位不能都包含 *。若所有欄位皆包含 *,則會忽略此規則。不會顯示任何的錯誤訊息。


您可以利用 * 或 ** 與顯示在原始陳述式中的分隔字元 (分號或逗號) 連用,以分隔多個欄位。一個星號 (*) 會與所有不需重新寫入的欄位相符,而兩個星號 (**) 則會與所有需重新寫入的欄位相符。

在 valuePatterns 中使用萬用字元列出 * 萬用字元的某些用法範例。

表 4–1 * 萬用字元的使用範例

URL 

valuePatterns 

描述 

url1, url2, url3, url4

valuePatterns = "**, *, **, *"

會重新寫入 url1url3,因為 ** 會指出待重新寫入的部分

XYZABChttp://host1.sesta.com/dir1.html

valuePatterns = "*ABC"

僅會重新寫入 http://host1.sesta.com/dir1.html 部分。所有位於 *ABC 之後的項目皆需重新寫入。

"0|dir1|dir2|dir3|dir4|test|url1

valuePatterns = "*|*|**|*|**|*|"

會重新寫入 dir2dir4url1。需重新寫入的最後一個欄位不必以 ** 表示。