|
|
PHP (angielski akronim rekurencyjny, którego rozwinięcie to PHP Hypertext Preprocessor), pierwotnie nazwany Personal
Home Page - skryptowy język programowania, służący przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w
tym przypadku po stronie serwera, z możliwością zagnieżdżania w HTML (bądź XHTML). PHP jest podobny w założeniach do
dużo starszego mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej rozbudowany.
Udostępniany jest na zasadach licencji open-source. Jego składnia bazuje na językach C, Java i Perl.
SQL (ang. Structured Query Language) to strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz
do umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi
zarządzania bazą danych DBMS.
Jest to język programowania opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z
serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z
użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a.
Apache jest otwartym serwerem HTTP dostępnym dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD,
Microsoft Windows). Po angielsku słowo Apache wymawia się epaczi, co brzmi tak samo jak a patchy (server), co było
określeniem tego serwera we wczesnym stadium jego rozwoju w 1995 roku, kiedy był on głównie zbiorem poprawek (patch)
nałożonych na serwer HTTP o nazwie NCSA.
Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W maju 2003 jego udział wśród serwerów wynosił 62%. W
połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych
środowisk w firmach oferujących miejsce na serwerach sieciowych.
|
is_uploaded_file
(PHP 3 >= 3.0.17, PHP 4 >= 4.0.3, PHP
5) is_uploaded_file -- Mówi czy plik został przysłany przez
HTTP POST.
Opisbool is_uploaded_file (
string nazwa_pliku )
Zwraca TRUE jeśli plik o
nazwie nazwa_pliku został
przysłany (upload) przez HTTP POST. To pomaga upewnić się, czy
złośliwy użytkownik nie próbuje oszukać skryptu pracującego na
plikach, tak aby działał on na plikach na których nie powinien
-- na przykład /etc/passwd.
Ten rodzaj testów jest szczególnie ważny jeśli istnieje
szansa, że cokolwiek robimy z przysłanymi plikami może zdradzić
ich treść użytkownikowi lub nawet innym użytkownikom tego
samego systemu.
Do prawidłowego działania, funkcja is_uploaded_file() wymaga argumentu jak
$_FILES['userfile']['tmp_name'], - nazwa przysyłanego pliku na
maszynie klienta $_FILES['userfile']['name'] nie zadziała.
Przykład 1. is_uploaded_file() przykład
<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "File ". $_FILES['userfile']['name'] ." upload prawidłowy.\n";
echo "Wyświetlam treść\n";
readfile($_FILES['userfile']['tmp_name']);
} else {
echo "Możliwy atak przez uploadowanie pliku: ";
echo "Plik '". $_FILES['userfile']['tmp_name'] . "'.";
}
?> |
|
is_uploaded_file() jest dostępna
tylko w wersjach PHP 3 późniejszych od PHP 3.0.16, i wersjach
PHP 4 późniejszych od 4.0.2. Jeśli utknołeś przy używaniu
wcześniejszej wersji, możesz użyć poniższej funkcji w celu
pomocy w zabezpieczeniu siebie:
Notatka: Poniższy przykład nie zadziała w
wersjach PHP 4 późniejszych od 4.0.2. To jest spowodowane
zmianą wewnętrznej funkcjonalności PHP po tej wersji.
Przykład 2. is_uploaded_file() przykład dla PHP 4
< 4.0.3
<?php /* Test po stronie użytkownika na uploadowany plik */
function is_uploaded_file_4_0_2($filename)
{
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
/* Użytkownik może mieć zamykający ukośnik w php.ini... */
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
/* Jak użyć tej funkcji, w starych wersjach nie masz także
* move_uploaded_file(): */ if (is_uploaded_file_4_0_2($HTTP_POST_FILES['userfile'])) {
copy($HTTP_POST_FILES['userfile'], "/place/to/put/uploaded/file");
} else {
echo "Prawdopodobny atak przez uploadowanie pliku: '$HTTP_POST_FILES[userfile]'.";
} ?> |
|
Patrz także: move_uploaded_file() i rozdział Obsługa uploadowanych plików w
celu uzyskania prostych przykładów użycia tej funkcji.
|