Solvita: html-filtrila dosiero alŝuto

La ĉefa problemo rilate al HTML-filtrila dosiero alŝuto estas ke ĝi povas esti facile preterpasita. HTML-filtriloj estas dezajnitaj por malhelpi iujn tipojn de dosieroj esti alŝutitaj, sed ili povas esti preterpasitaj ŝanĝante la dosiertendaĵon aŭ uzante ilon por redakti la dosierkapon. Ĉi tio signifas, ke malicaj dosieroj ankoraŭ povas esti alŝutitaj, eble kondukante al sekurecaj vundeblecoj kaj datumrompoj. Aldone, HTML-filtriloj ne kapablas detekti malican kodon ene de dosiero, do eĉ se malica dosiero estas blokita de esti alŝutita, ĝi ankoraŭ povus enhavi malican kodon kiu povus esti efektivigita sur la servilo.

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload" accept=".html">
    <input type="submit" value="Upload HTML File" name="submit">
</form>

1. Ĉi tiu linio kreas HTML-formon kun la ago-atributo agordita al "upload.php" kaj la metodo-atributo agordita al "post", same kiel agordante la enctype-atributon al "multipart/form-data":

2. Ĉi tiu linio kreas enigelementon de tipo dosiero, kun nomo "fileToUpload" kaj id "fileToUpload", kaj fiksas la akceptan atributon al ".html":

3. Ĉi tiu linio kreas enigelementon de tipo submit, kun valoro de "Alŝutu HTML-Dosiero", kaj nomo de "submit":

4. Ĉi tiu linio fermas la formon:

Filtri kaj validigi dosieron gravecon

Filtri kaj validigi dosiergravecon en HTML estas procezo por certigi, ke nur la necesaj dosieroj estas alŝutitaj al retpaĝo. Ĉi tio povas esti farita agordante regulojn kaj parametrojn por la tipoj de dosieroj alŝuteblaj, kiel dosiero grandeco, tipo aŭ etendaĵo. Aldone, HTML-formularoj povas esti uzataj por validigi uzantan enigon antaŭ ol ĝi estas sendita al la servilo. Ĉi tio helpas certigi, ke nur validaj datumoj estas akceptitaj kaj malhelpas malican kodon esti efektivigita sur la servilo. Fine, estas grave uzi sekurajn metodojn por alŝuti dosierojn kiel uzi HTTPS aŭ SFTP-protokolojn anstataŭ FTP.

Kiel mi limigas dosiertipojn en HTML

La HTML-normo ne provizas manieron limigi dosiertipojn kiam oni uzas an elemento. Tamen, vi povas uzi JavaScript por kontroli la dosiertipo antaŭ ol ĝi estas alŝutita.

Por fari tion, vi povas uzi la FileReader API por legi la enhavon de la dosiero kaj poste kontroli ĝian tipon. Se ĝi ne estas unu el la permesitaj tipoj, vi povas malhelpi ĝin esti alŝutita per voko preventDefault() sur la eventobjekto pasita en vian ŝanĝtraktilon.

Vi ankaŭ povas uzi HTML5-a akcepti atributon sur via elemento por specifi kiuj tipoj de dosieroj estas permesitaj. Ĉi tio kaŭzos retumilon-specifan dialogujon aperos kiam uzanto provas alŝuti dosieron kiu ne estas en unu el la akceptitaj formatoj.

Rilataj afiŝoj:

Lasu komenton