publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
5 skomentuj »

TAGI: php , md5 , ftp , plik

2009-05-13 15:41  |  Łukasz Sosna

Jak zweryfikować plik za pomocą MD5? (PHP)

Jak zweryfikować plik za pomocą MD5? (PHP)

Po wgraniu przez FTP na serwer plików, które chcielibyśmy udostępnić do pobrania z naszej strony, musimy następnie sprawdzić czy plik ten jest prawidłowy. Nie byłoby z tym problemu, gdyby taki plik był małych rozmiarów. Będziemy natomiast mieli spore problemy z plikami bardzo dużymi, np. archiwum z programem, w którym liczba plików przekracza tysiąc. Istnieje jednak jeden sposób, aby można było zrezygnować z potrzeby pobierania i sprawdzania umieszczanych na koncie plików.

Wiele jest programów, które pozwalają nam na obliczenie sumy MD5 danego pliku na naszym lokalnym komputerze. Równie dobrze można zatem zrobić to już po tym, jak plik zostanie wgrany na serwer. W języku PHP istnieje funkcja md5_file(), za pomocą której możemy wygenerować kod MD5 dla danego pliku i porównać go z tym, który wygenerowaliśmy na komputerze.

<?php
echo md5_file('./archiwum.rar');
?>

Jako parametr funkcji podaliśmy nazwę pliku, który chcemy sprawdzić. Ważne jest, aby plik archiwum.rar znajdował się w tym samym katalogu co skrypt PHP. Dzięki uruchomieniu skryptu w naszej przeglądarce wyświetli się suma MD5.

Rys.1: Rezultat wywołania funkcji dla pliku.

Możemy na przykład na naszym serwerze prowadzić sprzedaż programów, a to wymaga ich sprawdzenia. Nieprzychylna nam osoba mogłaby się włamać na serwer, a następnie podmienić plik. Użytkownicy, którzy go pobiorą, będą później mieli pretensje do nas.

Oto bardzo prosta metoda, pozwalająca na porównanie sumy wpisanej przez nas z obecną sumą pliku.

<?php
if (md5_file('./archiwum.rar') == 'ad08fe53a5e484ea568d60544ef3f05c') {
echo '<a href="archiwum.rar">Pobierz plik</a>';
}

else {
echo '<p>Plik został niepoprawnie wgrany lub jest uszkodzony</p>';
}
?>

Sprawdzamy, czy suma MD5 obliczona za pomocą funkcji PHP jest zgodna z wpisaną przez nas wartością, obliczoną w specjalnym programie. W wypadku gdyby była identyczna, użytkownikowi wyświetlony zostanie link do pobrania. Jeżeli natomiast wartość jest inna, poinformujemy go, że plik uległ uszkodzeniu.

Rys.2: Sprawdzanie
sumy MD5 pliku.

Dobrym pomysłem byłoby też umieszczenie w tym miejscu funkcji mail(), która wyśle na nasz e-mail informację o tym błędzie. Wówczas możemy go od razu naprawić, nie czekając na list od użytkownika.

Dzięki temu rozwiązaniu jesteśmy w stanie kontrolować, czy pliki znajdujące się na naszym serwerze są właśnie tymi które wgraliśmy. Jest to bardzo dobry sposób na zabezpieczenie serwisu przed osobami, które chciałyby podmienić zawartość plików. Pierwszy skrypt może również służyć do sprawdzenia, czy duży plik został przesłany prawidłowo.

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
5 skomentuj »

Komentarze

  • eRIZ

    #1 eRIZ® 2009-05-13 19:50:57 0

    Czy Wy naprawdę nie macie o czym pisać, tylko manuala PHP powielacie...?

    IP: 77.254.40.[...] Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1

  • eRIZ

    #2 eRIZ® 2009-05-13 20:09:16 0

    Lepiej by było uzupełnić polską wersję językową oficjalnego manuala, a nie nabijać sobie odwiedziny...

    IP: 77.254.40.[...] Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1

  • aaaaddd

    #3 aaaaddd 2009-05-14 19:43:46 0

    jak ktos sie wlamie na serwer to dostep do bazy gdzie bedziemy przechowywac hasze tez bedzie mial przeciez

    IP: 149.156.203.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)

  • m1chu

    #4 m1chu® 2009-05-24 16:27:22 0

    @eRIZ: to co w takim bądź razie widziałbyś w dziale takim jak "TIPS & TRICKS", jeżeli nie tego typu krótkie, niekiedy banalne porady?

    I nie to, żebym od razu pochwalał każdy wpis tutaj, czy to pod względem merytorycznym, czy technicznym. Z ciekawości po prostu pytam :]

    IP: 83.23.177.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)

  • concopn oilier

    #5 concopn oilier 2009-06-09 10:19:21 0

    @aaaaddd:

    jeśli na stronę włamie się robot (np przez dostęp do hasła na Twoim dysku - bo ty masz wirusa)  to nie będzie badał bazy tylko automatycznie nadpisze pliki

    więc porada bardzo spoko :)

    IP: 62.233.226.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729) FirePHP/0.3

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł