Ang sistemang tumatanggap ng mga file mula sa mga gumagamit ay maginhawa, ngunit kung hindi ito maayos na dinisenyo, maaari itong magdulot ng mabigat na kahinaan. Sinusubukan ng mga umaatake na samantalahin ang pag-upload upang tumakbo ng mga arbitraryong code, ubusin ang kapasidad ng server, at ipamahagi ang mga hindi wastong file.
Ang mga kilalang banta ay ang mga sumusunod:
Ang batayan ng mga pananggalang ay "multi-layer defense". Ang disenyo na nagtutok sa maraming antas ng proteksyon ay mas epektibo kaysa umasa sa isang solong sagot.
Limitahan ang mga pinapayagang extension, at huwag basta ibase ang pagtanggap sa extension lamang. Suriin ang signature ng file (magic number) upang beripikahin ang nilalaman. Huwag umasa sa Content-Type headers, at ipatupad ang mga hakbang upang pigilan ang double extension at NULL byte na mga bypass technique.
Huwag itabi ang ibinigay na pangalan ng file ng gumagamit nang walang pagbabago. Palitan ito sa isang natatanging pangalan gamit ang UUID o hash na may timestamp, at itabi ang orihinal na pangalan ng file bilang metadata. Isama rin ang pagproseso ng mga espesyal na simbolo at limitasyon sa haba.
Importante na iimbak ang mga na-upload na file sa labas ng web root at huwag hayaan itong ma-eksperimento nang direkta. Kung maaari, iimbak ito sa isang dedikadong object storage (halimbawa: S3) at ilabas ang link sa pag-download sa pamamagitan ng app. Limitahan ang mga karapatan ng folder sa minimum na pagbabasa at pagsulat.
Magtakda ng hangganan para sa laki ng file at ipatupad ang kontrol sa sabay-sabay na pag-upload at rate control upang mapanatili ang kakayahang magamit ng serbisyo. Kung tatanggap ng mga naka-compress na file (ZIP atbp.), kinakailangan ding suriin ang bawat file pagkatapos ng pag-unpack.
Agad na isagawa ang virus scan pagkatapos ng pag-upload (kung maaari gamit ang maraming makina) at gawing harmless ang mga PDF/Office gamit ang CDR. Ang mga imahe ay dapat i-reencode (load → lumikha ng bagong file) upang tanggalin ang hindi wastong data na na-embed.
Palaging protektahan ang komunikasyon gamit ang TLS (HTTPS) at ipatupad ang mga hakbang tulad ng CSRF tokens. Sa download responses, magbigay ng Content-Disposition: attachment
at X-Content-Type-Options: nosniff
upang maiwasan ang maling pagkilos ng browser.
Ilabas ang detalyado na log ng sino, kailan, at anong file ang pinag-uusapan, at magtakda ng mga alerto para sa anomalya (mga madalas na pag-upload o labis na pagtanggi). Ang pagpanatili ng hash para sa integridad ng file ay mabisang hakbang din.
Matapos ang implementasyon, isagawa ang mga pagsusuri sa kahinaan na nakatuon sa pag-upload ng file (shell injection, extension bypass, path traversal, atbp.) at patuloy na suriin ito sa regular na batayan.
Ang UploadF (uploadf.com) na nauukol dito ay maginhawa dahil sa suporta para sa PC/smartphone, drag-and-drop, at sabay-sabay na pag-upload ng 100 file, ngunit sa disenyo ng serbisyo, ang mga sumusunod na punto at mga pakana ay dapat isaalang-alang.
Punto ng Pagsusuri | Mga Dapat Ipatupad / Suriin |
---|---|
Pagsusuri sa Whitelist ng Extension | Payagan lamang ang mga kinakailangang format. Ang blacklist ay maaaring gamitin bilang karagdagang suporta. |
Pagsusuri ng MIME / Signature | Suriin kung tumutugma ang extension at nilalaman (suriin ang magic number). |
Pagsasangguni ng File Name | Palitan gamit ang UUID o hash at pamahalaan ang orihinal na pangalan sa metadata. |
Pag-aalis ng Espesyal na Character | Alisin o tanggihan ang `/`, `\`, `..`, NULL, atbp. |
Direktoryo ng Lokasyon ng Imbakan | Itabi sa labas ng Web root o sa object storage. |
Mga Pahintulot sa Folder | Ipagbawal ang pagpatakbo, pinakamababang pahintulot para sa pagbabasa at pagsulat (principle of least privilege). |
Maximum / Minimum na Sukat ng File | Ipahayag ang mga limitasyon at suriin ang mga file pagkatapos ng unpacking tulad ng ZIP. |
Kontrol ng Sabay-sabay na Pag-upload | Limitahan ang bilang ng mga sabay-sabay na operasyon, rate control, at itakda ang timeout. |
Virus Scan / CDR | Agad na isagawang pagsusuri sa pag-upload at kinakailangang mga hakbang para gawing harmless. |
Encryption ng Komunikasyon (HTTPS) | Gawing obligasyon ang TLS (upang pigilan ang mga atake mula sa middleman). |
Mga Hakbang laban sa CSRF | Ipatupad ang token-based checks. |
Setting ng Response Headers | Isama ang Content-Disposition: attachment , X-Content-Type-Options: nosniff , atbp. |
Logging at Alerts | Audit ng mga hakbang sa pag-upload at abisuhan sa anomaliya. |
Regular na Pagsusuri ng Seguridad | Isagawa ang mga pagsusuri sa kahinaan at penetration testing sa regular na batayan. |
Awtomatikong Pagtanggal ng Lumang Files | Disenyo para sa kumpletong pag-aalis pagkatapos ng oras ng pag-iimbak. |
Kontrol sa Access / Awtorisasyon | Mahigpit na pamahalaan ang mga karapatan sa pag-access sa antas ng gumagamit / grupo. |
Ang kakayahan sa pag-upload ng file ay may kasamang mga benepisyo at panganib. Sa pamamagitan ng pagsasama ng multi-layer defense (whitelisting, signature checking, pagkakaiba ng lokasyon ng imbakan, mga hakbangin laban sa malware, logging at auditing, atbp.) sa disenyo, ang panganib ng atake ay lubos na mababawasan.
Mahalaga para sa mga gumagamit na maramdaman ang "madaling gamitin at ligtas". Halimbawa, ang mga serbisyo tulad ng UploadF (uploadf.com) na may mga tampok tulad ng indibidwal na pagtanggal o pagtatakda ng panahon ng imbakan ay mas nagbibigay ng pakiramdam ng seguridad.
※ Ang mga ito ay halimbawa ng mga sanggunian sa oras ng paggawa ng artikulo. Para sa mas detalyadong materyal sa implementasyon at pinakabagong impormasyon sa mga banta, mangyaring suriin ang kani-kanilang mga opisyal na dokumento.