這篇文章主要介紹“web開(kāi)發(fā)文件上傳功能需要注意什么”,在日常操作中,相信很多人在web開(kāi)發(fā)文件上傳功能需要注意什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”web開(kāi)發(fā)文件上傳功能需要注意什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的阜城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1. 前言
文件上傳在日常開(kāi)發(fā)中十分常見(jiàn),但是潛在的安全問(wèn)題非常容易忽視。一旦開(kāi)發(fā)中忽視了這些問(wèn)題,將會(huì)引發(fā)系統(tǒng)安全漏洞。
2. 文件上傳開(kāi)發(fā)的安全建議
通常我們上傳的文件是由客戶端控制的,這種情況下就給了不懷好意人可乘之機(jī)。一些危險(xiǎn)的可執(zhí)行腳本將有可能被注入服務(wù)器中去。因此胖哥總結(jié)了以下幾點(diǎn)建議。
文件類型過(guò)濾
開(kāi)發(fā)者應(yīng)該有一個(gè)過(guò)濾清單允許上傳的文件類型應(yīng)僅限于業(yè)務(wù)功能所需的文件類型,在沒(méi)有允許列表過(guò)濾器的情況下,切勿直接接受文件名及其擴(kuò)展名,同時(shí)前端應(yīng)該對(duì)該清單進(jìn)行說(shuō)明。這是一個(gè)必要的步驟,大多數(shù)開(kāi)發(fā)者也做得很好。
文件名稱處理
不能使用原始文件名!這是一個(gè)容易被忽略的問(wèn)題。很多開(kāi)發(fā)者喜歡直接把上傳文件的按照原始文件名進(jìn)行轉(zhuǎn)存。
// Spring boot 開(kāi)發(fā)中不建議使用這個(gè)來(lái)作為轉(zhuǎn)存的名稱,你應(yīng)該生成一個(gè)新的名稱來(lái)映射此名稱 String originalFilename = MultipartFile.getOriginalFilename();
這樣是不安全的。雖然大部分/\:<>?字符已經(jīng)被過(guò)濾掉,但是. * % $,這些腳本中的??鸵廊豢梢员话谖募?,所以不能使用原始文件名,你應(yīng)該指定一個(gè)算法來(lái)進(jìn)行重命名,建議使用一種摘要算法來(lái)確定文件名。例如,文件名可以是文件名加上日期的 MD5 哈希。
如果業(yè)務(wù)需要原始文件名的話存儲(chǔ)新的命名和原始名稱的映射即可。
摘要校驗(yàn)
服務(wù)端無(wú)論上傳、修改還是下載文件都需要進(jìn)行摘要校驗(yàn)(MD5、SHA256),以防止文件和預(yù)設(shè)的不一致。客戶端有必要的情況下也建議進(jìn)行摘要校驗(yàn)。
限制大小
這一點(diǎn)如果使用 Spring 進(jìn)行開(kāi)發(fā)的話已經(jīng)做了限制,如果該限制不滿足業(yè)務(wù)需要,可以修改,但是不能移除限制,否則會(huì)導(dǎo)致拒絕服務(wù)攻擊。
訪問(wèn)限制
如果不是業(yè)務(wù)需要,只有身份驗(yàn)證和授權(quán)的用戶才能使用文件上傳功能。不然你的系統(tǒng)就成了別人的免費(fèi)圖床。
行為審計(jì)
對(duì)于安全我們只能被動(dòng)防御,因此對(duì)文件上傳的操作建議有審計(jì)日志、而且審計(jì)日志不應(yīng)該受文件系統(tǒng)影響,這樣發(fā)生安全事件時(shí)可以快速定位問(wèn)題。到此,關(guān)于“web開(kāi)發(fā)文件上傳功能需要注意什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!