-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.
news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all
.nl!xs4all!feeder.news-service.com!feeder2.cambriumusenet.nl!feed.tweaknews.nl!
209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neo
strada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neos
trada.pl.POSTED!not-for-mail
Message-ID: <a...@k...net>
From: Konrad Kosmowski <k...@k...net>
Subject: Re: skrypt do udostepniania plikow
Newsgroups: pl.comp.www
References: <b...@a...googlegroups.com>
<hu06k6$ie0$1@news.onet.pl> <a...@k...net>
<hu1551$mfn$1@news.onet.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
Date: Mon, 31 May 2010 22:24:42 +0200
Lines: 81
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.24.10.66
X-Trace: 1275337495 unt-rea-a-02.news.neostrada.pl 2582 83.24.10.66:39019
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.www:396057
[ ukryj nagłówki ]** Peter May <p...@o...pl> wrote:
>>>> - ograniczenia co to typu plikow (zeby nie dalo sie wyslac plikow
>>>> wykonywalnych),
>>> A jak to ma działać w założeniach? Bo jeśli ma być tylko sprawdzane po
>>> rozszerzeniu pliku, to ja sobie plik test.exe zamieniam na test.zip i już
>>> obszedłem zabezpieczenia ;-)
>>> W praktyce nie wiem, jak są realizowane takie zabezpieczenia i czy w ogóle
>>> istnieją.
>> No jak to jak? Przecież to banalne - plik jest uploadowany czyli wgrywany do
>> pamięci. Już na początku transferu można określić z dużą dokładnością jego
>> plik
> Banalne jest zawsze wtedy, jak się wie.
Chodziło mi o to, że nie jest to złożony proces czy jakieś niewiadomo jakie
algorytmy - w zasadzie proste przetwarzanie krok po kroku.
> Osobiście nigdy nie miałem potrzeby wnikania w proces upload-u plików. Toteż
> od razu zaznaczyłem, iż nie wiem jak przeprowadzić sensownie detekcję typu
> pliku po stronie serwera.
No więc jak pisałem - możesz próbować już po przesłaniu kawałka pliku, z jego
początku często (o ile plik nie jest np. totalnie losowy) już możesz wykminić
typ pliku. Tym bardziej jeżeli mamy do czynienia z czarną listą - jak pisał
kolega - np. .exe czy pliku wykonywalnego Windows nie łykamy, to już można
bardzo wcześnie określić czy plik jest aplikacją windows na podstawie nagłówka.
Jeżeli mamy do czynienia z białą listą (np. dopuszczamy tylko pliki JPEG i BMP)
to również mamy ułatwione - wystarczy doczytać jaka jest struktura tych plików
(również mają nagłówki) i czegokolwiek co nie jest zgodne ze strukturą nie
przepuszczać.
To można zrobić jeszcze w czasie trwania transferu - tyle, że nie jestem
pewien, czy PHP z dajmy na to Apache będzie to potrafiło czy nie trzeba
przypadkiem zapiąć jakiegoś modułu.
Już po przesłaniu pliku to jest wręcz banalne bo po prostu sprawdzamy uniksowym
file czy czymś wbudowanym w PHP.
> A jeśli chodzi o detekcję typu pliku, to czy chodzi o coś takiego? Tak z
> ciekawości pytam (zakładam po stronie serwera język PHP).
> http://www.webdeveloper.com/forum/showpost.php?s=883
0bdc2e1b58cee060a1d6555718fe0&p=1031152&postcount=9
Raczej nie.
>> i ew. przerwać transfer, dalej po zakończeniu transferu można jeszcze
>> zweryfikować plik np. skanerem antywirusowym i podjąć decyzję. Problem jest
>> w
> W jakim sposób używając PHP mogę przeskanować plik antywirusem obecnym na
> serwerze? Znowu pytam z ciekawości, bo cokolwiek w Google bym wpisał ze
> słowem "antivirus", to mam najpierw listę programów desktopowych. Może jakaś
> podpowiedź?
No zasadniczo dowolny antywirus, który potrafi działać wsadowo tzn. wywołujemy
go przez polecenie wskazując plik/i i zbierając odpowiedź (wirus/niewirus). Np.
ClamAV ale raczej większość silników antywirusowych w odpowiednich wersjach
(przeznaczenie serwerowe) udostępnia jakąś formę wsadowego przetwarzania -
właśnie np. wywołanie z CLI czy jakieś API...
>> zasadzie tylko z mocami przetwarzania (głównie pamięć - każdy plik należy
>> wczytać i przeskanować, a to zeżre pamięć), z oprogramowaniem tego nie
>> powinno być problemu.
> To na tradycyjnych hostingach może nie zadziałać, bo jest dość sporo
> limitowana przydzielana pamięć.
Takich rzeczy raczej nie robi się na tradycyjnym hostingu bo to nieco wykracza
poza typową stronę WWW. To już raczej coś w rodzaju serwera plików się robi. Z
pełnymi szykanami tzn. niestety oczywistym jest, że jeżeli serwer plików ma
obsługiwać klientów z Windows to bez antywirusa się raczej nie obejdzie.
--
+ ' .-. .
, * ) )
http://kosmosik.net/ . . '-' . kK
Następne wpisy z tego wątku
- 31.05.10 20:26 Konrad Kosmowski
Najnowsze wątki z tej grupy
- Jakie znacie działające serwery grup dyskusyjnych?
- is it live this group at news.icm.edu.pl
- php, linki z nazwami a $_GET, SEO
- www polityka pl captcha
- dyktatura brudnego palucha
- www.znanylekarz.pl
- Czy pytanie o sczytywanie stron programami/skryptami to tu?
- Grupy webdevowe
- Jak wydrukować stronę?
- IIS, kilka witryn
- linki <a href="/strona.php"> (ze slashami)
- co rozszerza stronę??
- responsywny akapit <p>
- Czy istnieje jakiś emulator przeglądarek pod Mac'a?
- taka sama konfiguracja dla localhost i produkcji
Najnowsze wątki
- 2025-02-01 Śmierć mózgu a narządy do pobrania
- 2025-01-31 A niektórym to naprawdę zależy na ekologi w miastach LPG POWRACA ;-)
- 2025-01-31 Lublin => Programista Delphi <=
- 2025-01-31 Łódź => Programista NodeJS <=
- 2025-01-31 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-01-31 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-31 Gdańsk => iOS Developer (Swift experience) <=
- 2025-01-31 Kraków => UX Designer <=
- 2025-01-31 Warszawa => Data Engineer (Tech Leader) <=
- 2025-01-31 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-31 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-31 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-31 Warszawa => Full Stack .Net Engineer <=
- 2025-01-31 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-31 Gdańsk => Programista Full Stack .Net <=