19717 skanuj0137 (14)

19717 skanuj0137 (14)



148 PHP i MySQL dla każdego

Rysunek 5.7.

Lista plików

Pik Edycja Wjdok Przejdź Zakładki Narzędzia Pornos

przez kod

, _ J - L^> - ^ : | J hKp:/jloca*ofl/index.html

il

z listingu 5.10

^ Rozpocznij przygód... O Aktualności

Pierwszy plik Drugi plik Trzeci plik Czwarty plik Piąty plik

W szczególności należy zwrócić uwagę na punkt 2. Sprawdzenie poprawności przesłanych danych jest niezbędne, gdyż inaczej możemy doprowadzić do sytuacji, kiedy odpowiednio spreparowany ciąg znaków, przesłany jako parametr dla skryptu, pozwoli potencjalnemu włamywaczowi na pobranie dowolnego pliku z serwera. Jak sprawdzić poprawność danych? Można stosować różne metody weryfikacji, np. sprawdzanie, czy przesłany ciąg nie zawiera znaków potencjalnie niebezpiecznych (jak ., ..,    /)4. My

zastosujemy sposób niezbyt wygodny, ale za to bardzo bezpieczny. Sporządzimy listę plików, które mogą być pobierane, i za każdym razem będziemy sprawdzać, czy przesłana nazwa znajduje się na tej liście. Listę umieścimy w skrypcie, w tablicy. W związku z tym kod skryptu downloadphp będzie miał postać jak na listingu 5.11.

Listing 5.11. Skrypt wysyłający żądany plik do przeglądarki

<?php

SfilesPath =

function checkFileName($name)

{

Spliki - array(

1    => "plikl.zip",

2    -> "plik2.zip"

return array_search($name. Spliki):

}

function sendtSfileName. SfilePath)

{

i f(!fi 1e_exi sts(Sfi 1ePath.Sfi 1eName)){ echoCNie ma takiego pliku na serwerze!'): return:

}

Sfd = fopen($filePath.$fileName,"r”):

Ssize = fi 1esi ze($fi1ePath.$fi leName):

Scontents = fread($fd. filesize(SfilePath.SfileName)):

Różne metody weryfikacji zostały zaprezentowane m.in. w książkach: PHP 101 praktycznych skryptów, Helion 2003, ISBN 83-7361-127-4 oraz 505 praktycznych skryptów dla webmastera, Helion 2005, ISBN 83-7361-749-3.


Wyszukiwarka

Podobne podstrony:
skanuj0133 (14) 144 PHP i MySQL dla każdego if($_FILES[ plikl ][,error ] — UPL0A0_ERR_0K){ $new_name
skanuj0135 (14) 146 PHP i MySQL dla każdego 146 PHP i MySQL dla każdego Rysunek 5.6. Okno dialogowe
57188 skanuj0139 (14) 150 PHP i MySQL dla każdego Jeśli plik nie istnieje, do przeglądarki wysyłana
64561 skanuj0131 (14) 142 PHP i MySQL dla każdego danych. Maksymalna wielkość pliku zależy również o
skanuj0114 (20) 126 PHP i MySQL dla każdego Rysunek 4.17. Efekt działania funkcji array_count_values
33406 skanuj0094 (33) 106 PHP i MySQL dla każdego Rysunek 4.3. Ilustracja działania E* Łdyda widok
12225 skanuj0114 (20) 126 PHP i MySQL dla każdego Rysunek 4.17. Efekt działania funkcji array_count_
32018 skanuj0028 (163) 40 PHP i MySQL dla każdego Rysunek 2.8. Wyniki działania funkcji gettype Pik
49399 skanuj0004 (565) 14 PHP i MySQL dla każdego 14 PHP i MySQL dla każdego Rysunek 1.1. PHP5 w tra

więcej podobnych podstron