架構管理程式 - 跨網站編寫 Script 的保護
「架構管理程式」的「跨網站編寫 Script 的保護」節點可讓您啟用或停用「跨網站編寫 Script 的保護」特性。
在啟用時,如果使用者要求中含有不容許的屬性或字串時,此特性即會拒絕該要求。
您可在「架構管理程式」的這個節點中指定不容許的屬性與字串。
您也可以將指令排除在跨網站編寫 Script 編寫保護之外,
方法是容許該特定指令的指定屬性值中包含被禁止的字串。
在預設的情況下「跨網站編寫 Script 的保護」特性是停用的。
警告:跨網站編寫 Script 的保護是一種限制型的特性,
這個特性會根據架構限制執行指令。
此特性不會檢查有哪些屬性或字串已被定義為禁止使用,因此,
當您架構禁止使用的屬性或字串時,請確定禁止的屬性不是指令需要使用的屬性。
同時亦請確定禁止字串值不是通常要傳遞給指令的值。
請在架構這個特性時,要極度小心。
若要啟用此特性請:
- 呼叫「架構管理程式」,並按如下所示移至您案例的「跨網站編寫 Script 的保護」節點:
WebSphere Commerce > host_name >
案例清單 > instance_name > 案例內容
> 跨網站編寫 Script 的保護
- 使用「一般」標籤,按如下所示啟用「跨網站編寫 Script 的保護」特性:
- 按一下啟用。
- 若要新增 WebSphere Commerce 指令不容許使用的屬性,
請以滑鼠右鍵按一下「禁止屬性」表格,並選取新增列。輸入不容許的屬性。
您可以在每一列只指定一個屬性。
- 若要移除「禁止屬性」表格中的屬性,請標明並以滑鼠右鍵按一下表格中內含該屬性之行,
並選取刪除列。
- 若要新增 WebSphere Commerce 指令不容許使用的字串,
請以滑鼠右鍵按一下「禁止字元」表格,並選取新增列。
請新增不容許使用的字串。每一列只能指定一個字串。
- 若要移除「禁止字元」表格中的字元,請標明並以滑鼠右鍵按一下表格中內含該字元之行,
並選取刪除列。
附註:依預設,禁止使用的字元欄位中會指定下列字串。
這些字串最常做為 Script 標籤用於一些惡意攻擊之跨網站編寫的 Script 中:
- "<SCRIPT"
- "<SCRIPT"
- "<%" 與 "<%"
- 使用「進階」標籤,將 WebSphere Commerce
指令排除在跨網站編寫 Script 保護之外,方法依下列方式,容許該特定指令的指定屬性值可包含被禁止的字串:
- 從指令清單框中選取指令。
- 在「例外屬性清單」視窗中鍵入容許使用禁止字元的屬性(以逗點隔開),
並按一下新增。
- 若要移除指令與其屬性,請從「例外指令清單」視窗中選取所要指令,
並按一下移除。
您也可以選取特定屬性並按一下
移除,
以移除指令中的特定屬性。
- 若要將變更套用在「架構管理程式」上,請按一下套用。
- 一旦您順利更新案例的架構後,
您會收到一則訊息,指出更新成功。
- 從 WebSphere Application Server 管理主控台中,停止再重新啟動 WebSphere Commerce Server 案例。
附註:
- 當指令因「跨網站編寫 Script 的保護」特性而被排除時,
將對符號採取 HTML 編碼方式,以編碼指定屬性的值。
例如,將 cmd1?user=<Thomas> 指令編碼成 cmd1?user=<Thomas>
- 當您在禁止使用的字元欄位中指定字串時,請注意下列事項:
- 字元順序可能因 URL 編碼標準,而將字串轉換成單一字元。
舉例來說,"<%bb" 字串將轉換成
"<X" 字串,其中 X 為單一字串,其十六進位表示值為
HEX 'bb'(十進制 187)。在此情況下,
當 "<%bb" 字串置於 URL 中傳遞時,
「跨網站編寫 Script 的保護」特性將不會攫取到。
- 如果字元順序未遵循 URL 編碼標準,
可能會造成字串轉換失敗。舉例來說,
"<%gg" 字串將轉換失敗,因為 HEX 'gg' 不是有效的十六進位值表示方式。在此情況下,
不論是否啟用「跨網站編寫 Script 的保護」,
"<%gg" 字串將造成異常狀況,而不會對內含這類字串的 URL 要求做出回應。
範例:請注意下列範例:
- 禁止字串: "<SCRIPT",
"<%"
禁止屬性: mycomment, description
指令 |
狀態 |
cmd1?description=Available
... |
拒絕 |
cmd2?userid=Thomas... |
接受 |
cmd3?mycomment=<SCRIPT>... |
拒絕 |
cmd4?password=<%...%>... |
拒絕 |
- 如果您希望 cmd1 指令的 "text" 屬性中能包含禁止字串
("<SCRIPT", "<%"),
但其它屬性則不行,如 "txt" 屬性,您可以排除 cmd1
並指定 "text" 作為例外屬性。
指令 |
狀態 |
cmd1?text=<SCRIPT>... |
接受 |
cmd1?text=<%...%>... |
接受 |
cmd1?txt=<SCRIPT>... |
拒絕 |
cmd1?txt=<%..%>... |
拒絕 |
