>
按照等保要求,跨域的不安全性,需要修復。
這個需要根據客戶端傳遞的請求頭中的Origin值,進行安全的跨站策略配置,目的是對非法的origin直接返回403錯誤頁面。
漏洞復現
復現方式為在%20Header%20中指定%20Origin%20請求頭,看是否可以請求成功。
能夠請求成功,說明未對請求頭進行控制,有漏洞。
curl-H'Origin:http://test.com'http://192.168.15.32:80
修復辦法
在http中定義一個通過map指令,定義跨域規則并返回是否合法
http%20{ %20%20%20%20... %20%20%20%20//%20再白名單里邊返回0,不在返回1 %20%20%20%20map%20$http_origin%20$allow_cors%20{ %20%20%20%20%20%20%20%20default%201; %20%20%20%20%20%20%20%20"~^https?://.*?\.tripwolf\.com.*$"%201; %20%20%20%20%20%20%20%20"~^(https?://(dmp.finerice.cn)?)$"%201; %20%20%20%20%20%20%20%20"~*"%200; %20%20%20%20} %20%20%20%20server%20{ %20%20%20%20%20%20%20%20#%20指定允許其他域名訪問%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20%20add_header%20Access-Control-Allow-Origin%20$http_origin; %20%20%20%20%20%20%20%20#%20允許的請求類型 %20%20%20%20%20%20%20%20add_header%20Access-Control-Allow-Methods%20GET,POST,OPTIONS; %20%20%20%20%20%20%20%20#%20許的請求頭字段 %20%20%20%20%20%20%20%20add_header%20Access-Control-Allow-Headers%20"Origin,%20X-Requested-With,%20Content-Type,%20Accept"; %20%20%20%20%20%20%20%20location%20/%20{ %20%20%20%20%20%20%20%20%20%20%20%20#%20進行請求攔截 %20%20%20%20%20%20%20%20%20%20%20%20if%20($allow_cors%20=%200){ %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20403; %20%20%20%20%20%20%20%20%20%20%20%20} %20%20%20%20%20%20%20%20%20%20%20%20root%20/mnt/data; %20%20%20%20%20%20%20%20} %20%20%20%20} }
驗證方法
通過POSTMAN進行請求模擬,配置不同的Origin,查看返回結果。
如果不需要跨域,則直接清理掉add_headerAccess-Control-Allow-Origin等相關配置,就不這么復雜了。
>