系統中數據包含在一個HTTP響應頭文件里,未經驗證就發送給了web用戶,即獲取未經驗證的值輸入到頭文件中。
String fileName = request.getParameter("fileName");
fileName = new String(fileName.getBytes("gb2312","iso-8859-1"));
string header = request.getParameter("headerInfo"); string data = request.getParameter("dataInfo"); //生成excel工作簿 HSSFWorkbook wkb = ExportUtil.exportExcel(header,data,getDataList(request)); //放回前台提供下載 response.setContentType("application/x-download;charset-utf-8"); response.addHeader("Content-DEsposition","attachment;filename="+filename);
修復建議:
攻擊者利用未經驗證的字符,可以提交一個惡意字符串,不僅可以控制應用程序要發送的響應剩余頭文件和正文,還可以創建完全受其控制的其他響應。
對即將加入響應頭文件的值進行輸入驗證,並檢驗其屬性是否正確,驗證所有應用程序輸入數據或向用戶輸出的數據。
建議可以創建一份安全字符自名單,其中的字符允許出現在HTTP響應頭文件中,並且只接受完全由這些受認可的字符組成的輸入。
例如,有效的用戶名可能僅包含字母數字字符,帳號可能僅包含0-9的數字.或者建立黑名單如:校驗禁止如“:”(冒號)和“=”(等號)及\r\n等。