緣起:
進公司以來,第一次碰上弱掃的問題,不久前其實有修過一次,但那次是網址的
parameter
相關處理,比較涉及公司程式碼底層,所以不太能寫上來,但第二次掃描掃出的問題,大部份都改一改
webconfig 就能解決了。
我有去請教我們資深的工程師,他有給我現成的標準解法,照抄就行。想記錄一下這次碰上的問題,還有與之對應的解法。
末加密的 __VIEWSTATE 參數:
我們資深工程師說,這個要去 IIS 管理那邊為站台產個金鑰,然後把它給設定到 web.confg 裡的 config -> system.web -> machineKey。我後來去看了看 web.confg,發現它其實已經有設定了,所以怎麼還是有錯 ? 接著再繼續找跟 __VIEWSTATE 相關的資料時,發現,原來是因為 config -> system.web -> pages 的 viewStateEncryptionMode 屬性沒有設定,把它給設成 "Always" 就 OK 了。
應用程式中找到不必要的 HTTP 回應標頭:
這東西感覺是 ASP 自己產生的,我原本以為要改的話需要去對 IIS
做設定,但問我們的資深工程師,他也是說改 web.config 就行。
要移除那個 X-Power-By,可以在 configuration tag
裡面加入
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
再來是 X-AspNet-Version,是要在 configuration tag
裡面加
<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>
除了以上那兩個看名稱就能猜到它大概在做什麼的設定,我們資深工程師還有傳這個,一樣是寫在
configuration tag 裡
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
有稍微去查這個設定的作用,是 IIS 10.0 加入的,給我的感覺是,只要有設定這個東西,Server 在回應 client 端時就不會回傳跟 "Server" 有關的 header
沒有留言:
張貼留言