360站長平臺中有一個工具是“官網直達”,通過申請可以使你的網站在360搜索結果中加上“官網”字樣的標識,百度也有這樣的工具,不過是收費的,所以趁著360還沒收費,有興趣的朋友可以為自己的網站申請一下,申請這項服務有三個基本要求:ICP備案、符合法律法規、網站安全檢測。前兩項要求基本大部分網站都符合要求,我今天就卡在了第三項網站安全檢測上,無法通過審核。
我的網站使用的是Discuz論壇程序,360網站安全檢測的評分是85分,出現的唯一一個警告信息是“Flash配置不當”的漏洞,查看了一下360官方給出的此漏洞危害:
可被用來進行跨域訪問,可能會導致“跨站點偽造請求”或“跨站點跟蹤”(“跨站點腳本編制”的變體)之類的攻擊,從而導致其它用戶的信息被非法讀取。
這個漏洞的解決方法很簡單——調整Flash跨域安全策略,Flash跨域策略文件是crossdomain.xml,如果是Discuz程序的話,這個文件就在Discuz的根目錄中,我們只需要將這個文件用記事本打開,將domain="*"中的"*"修改為你的網站域名即可,域名前不要加http://。
解決方法就是這么簡單,如果你只是為了解決這個警告信息的話,到這里就可以不用再往下看了,因為問題已經解決了,但如果你對網絡技術感興趣的話,可以繼續往下面看。因為我覺得還是有必要和各位網絡技術愛好者介紹一下crossdomain.xml這個策略文件。
以Discuz論壇程序的crossdomain.xml文件為例,我們看到其中有四行代碼:
1.<?xml version="1.0"?>
2.<cross-domain-policy>
3. <allow-access-from domain="*" />
4.</cross-domain-policy>
為了方便介紹,我在每句代碼前面加了序號,第一句是最簡單的,首先聲明xml版本,第二句和第四句是一個完整的開合標簽,稍微有點HTML基礎的朋友都清楚這一點。cross-domain-policy是跨域策略中必須的一個節點,也是這個文件中固定的格式,通過這三個英文單詞的意思我們也可以理解cross-domain-policy的意思,其中cross domain可以理解為跨域,policy在這里是策略的意思。整個文件中最重要的策略屬性就是第三句,cross-domain-policy屬于策略文件中的根節點,下面第三句allow-access-from屬于子節點,當然子節點不是只有allow-access-from這一個,除此之外還包括site-control、allow-access-from-identity、allow-http-request-headers-from這三個子節點,也就是說cross-domain-policy下面的子節點只能是上面提到的這四個,沒有其他的子節點。
cross-domain-policy是根節點,不能賦予任何屬性,但是子節點是可以賦予屬性的,例如我們上面例子中的<allow-access-from domain="*" />,其中的domain就是allow-access-from的屬性之一,只有domain中指定的域才能通過Flash讀取域中的信息和內容,例如我們案例中domain的值是*,就代表所有的域都有權限通過Flash讀取我們網站所在域的內容,因此就有可能被別人跨域訪問并獲取我們網站的用戶信息等敏感內容,因此我們在上面的解決方法中,也是將*代替為我們自己的域名,這樣只有我們自己的域名所在域才有權限通過Flash訪問本域的內容。