Archive for czerwiec, 2007

Uważaj na swój indeks

Nie, nie apeluję do studentów aby uważali na swoje oceny (choć to też jest ważne) ani na duchownych, by uważali aby im ktoś Indeksu Ksiąg Zakazanych nie gwizdnął. Nie, rzecz jasna odnoszę się do Internetu.

Prawdopodobnie najpopularniejszy serwer internetowy na świecie, Apache, jak i zresztą jego konkurenci, ma to do siebie, że pozwala pokazywać listę plików obecnych w danym katalogu serwera, gdy nie jest dostępny dokument określany w ustawieniu DirectoryIndex - najczęściej index.html, index.htm czy default.htm, czyli dokument domyślnie pokazywany gdy przeglądarka zażyczy sobie pokazania, co w danym katalogu “siedzi”. Taki podgląd plików w katalogu jest bardzo fajną opcją, często bardzo przydatną, jednak oczywiście - może sprawić nam kłopoty. Zdarzyło się już pewnie nie raz, że komputerowi entuzjaści dostawali dostęp do kodu lub ważnych plików konfiguracyjnych źle napisanego serwisu - przykładowo słyszałem o sytuacji, gdy ścieżka /admin/admin.php prowadziła do jakiegoś panelu administracyjnego, podczas gdy samo /admin/ - oczywiście do indeksu katalogu, w którym też znajdowały się pliki konfiguracyjne z rozszerzeniem .inc, zawierające np. hasło dostępu do bazy danych. A zła konfiguracja serwera (względnie niedomyślność programisty nie wiedzącego o takim zagrożeniu) spowodowała, że pliki .inc traktowane są jako czysty tekst i można je bezproblemowo odczytać - także nieupoważnionym osobom (by się przed tym, najłatwiej, zabezpieczyć ja nie stosuję plików tekstowych konfiguracyjnych włączanych gdzieś indziej do skryptu, a nadaję im rozszerzenie .php, by przed wyświetleniem potraktował je interpreter tego języka co spowoduje, że treść skryptu nie zostanie ujawniona).

Powiecie, że sytuacja wydumana. Dobrze, zgodzę się, może to tylko jednostkowy przypadek. Jednak teraz coś bliżej życia - niektórzy używają swoich serwerów internetowych po to, by ze znajomymi dzielić się plikami - na przykład muzyką. Nic nie stoi na przeszkodzie, nawet prawo pozwala na dzielenie się z rodziną w ramach użytku osobistego, a w założeniu nasz katalog jest ukryty i nikt o nim nie wie. Jednak jeden nieopatrzny link spowoduje, że wyszukiwarka internetowa, np. Google będzie mogła znaleźć taki katalog. I go zindeksować. Co za tym idzie? A, zrobiłem eksperyment szukając pewnego utworu muzycznego w Google. Szybkie zapytanie:

[wykonawca] [tytuł] intitle:index of

Spowodowało, że znalazłem odpowiedni album i odpowiedni utwór w postaci pliku OGG. Jak się przed tym uchronić? Oczywiście, robots.txt. Albo wyłączając automatyczne indeksy. O ile niekiedy faktycznie mogą być one użyteczne, o tyle często mogą być oczywiście również niebezpieczne. Wyłączenie tworzenia automatycznych indeksów plików w serwerze Apache odbywa się dyrektywą Options z parametrem -Indexes, którą możemy użyć albo w httpd.conf, bądź też często jest możliwe w pliku .htaccess. Wyłączenie tej opcji w serwerze Microsoftu, IIS jest również nietrudne, przykładowo w IIS 7.0 wystarczy tylko wejść w opcjach danego katalogu (lub aplikacji) do sekcji Directory Browsing i kliknąć Disable (w IIS 6.0 także w zarządzaniu danym katalogiem znajdziemy odpowiednią opcję). Istnieje też bardzo prosta, nie wymagająca grzebania w konfiguracji metoda - stworzenie jakiegokolwiek, choćby pustego, pliku index.html, który będzie serwer wysyłał do klienta zamiast tworzonej listy plików.

Oczywiście nie namawiam do paranoidalnego wyłączenia natychmiast wszystkich swoich indeksów - radzę jednak przemyśleć czy pokazywanie plików na pewno nie jest zagrożeniem dla aplikacji.

Jednak jeszcze wspomnę o jednej sprawie - w celach naukowych postanowiłem wpisać w wyszukiwarce, czy uda mi się znaleźć pliki konfiguracyjne jakiś serwisów w podobny sposób jak muzykę. I jedna ze stron, które mi się by, jako potencjalnemu włamywaczowi spodobała, okazała się być tzw. honeypot (ang. garnek miodu), czyli właśnie przynętą na włamywaczy, takich, którzy plików konfiguracyjnych szukali. Gratuluję pomysłu! :-)

| Komentarze (4)

Szukajcie, a nie znajdziecie

Garść sytuacji w jaki sposób tutaj można trafić (wybrane z pośród blisko 2000 słów kluczowych):

  • jednostka miary mb - milibajt
  • dlaczego stacje radiowe maja różne częstotliwości - bo jakby miały jedną, to by się nie pomieściły
  • dziewczynki też mogą programować - absolutna racja! i gorąco je do tego zachęcam
  • obliczanie abrakadabra imienia i nazwiska - abrakadabra!
  • co znaczy 666 - “Kto ma rozum, niech liczbę Bestii przeliczy: liczba to bowiem człowieka. A liczba jego: sześćset sześćdziesiąt sześć.” (Ap 13,18)
  • jakie znaki zodiaku mogą stworzyć idealny związek - każde, o ile ludzie się dobiorą odpowiedni
  • gdzie jest moje miejsce w świecie? - Google nie pomoże Ci w odpowiedzi na to pytanie
  • te straszne jeansy - przerażają mnie też
  • odtwarzacze mp3 dla niedowidzących - iPod Nano Shuffle - nie ma wyświetlacza, w sam raz się nadaje.
  • z jakiego jezyka pochodzi slowo ,,gadżet” - ang. gadget
  • jak pisać “nie” z czasownikami? - rozdzielnie
  • czy informatycy mają inne zainteresowania - niektórzy zapewne tak - na przykład elektronika

A dla najczęściej powtarzających się słów kluczowych: tak, Aero Glass chodzi na Intel GMA 950!

Jestem zły, że w kółko atak na GG i Vista się słowach kluczowych pojawiają. Chyba powinienem pisać bardziej różnorodnie.

| Komentarze (9)

Mobilny internet

Dobre 9 lat temu głośno było o czymś, co nazywa się WAP. Jednak czasy się zmieniły.

WAP był za wcześnie. Wtedy mało kto interesował się usługami dodanymi, wtedy wiadomości tekstowe były w gruncie rzeczy nowością. A rozliczanie za czas trwania połączenia (zwykle o oszałamiającej szybkości 9,6 kbps) praktycznie przypieczętowało los WAP. Do spółki z ubogą treścią stron, brakiem grafiki i zupełną innością stron WAP od klasycznych stron WWW - te pierwsze musiały być pisane w specjalnym dialekcie XML, nazwanym WML, nie mogły nawet początkowo przekraczać pewnej wielkości, bo telefony by sobie nie poradziły… Cudem było, że istniały skrypty po stronie klienta, tak zwany WMLScript. A że XML jest od HTML-a znacznie bardziej restrykcyjny, to i się jakoś specjalnie webmasterzy nie poddawali fali.

Potem pojawił się WAP 2.0. Wprowadzony w 2001 roku WAP 2.0 zmienił oblicze tej technologii. Dla użytkownika widoczna była kolorowa grafika i bardziej zaawansowane strony. Upowszechnienie się pakietowej transmisji danych GPRS zmniejszyło koszty, bo już nie płaciliśmy za czas czytania strony, a za to ile ona zajmowała. XHTML Mobile Profile ułatwił tworzenie stron. A z czego najbardziej korzystali i nadal korzystają użytkownicy? Z WAP Push, czyli w gruncie rzeczy możliwości pobierania z Internetu obrazków, gier i dzwonków na swoje telefony komórkowe, a same strony WAP są nadal bardzo rzadko odwiedzane. Wszystko bowiem zmieniło się nagle, na początku zeszłego roku, gdy pojawiła się Opera Mini. Opera Mini polega na serwerach firmy Opera i oferuje przeglądanie klasycznych stron internetowych wstępnie przetransformowanych do postaci dobrej dla malutkich ekranów przeglądarek w komórkach. Stąd nie ma już niby konieczności tworzenia oddzielnych wersji stron (w rzeczywistości jest to jednak wskazane, bo Opera Mini nie radzi sobie przy niektórych elementach klasycznych witryn).

Z mobilnym internetem mam wspólną przeszłość - gdy WAP pojawił się, ja byłem bardzo żywo zainteresowany tą technologią, tworzyłem stronę o WAP-ie (oraz stronę WAP własną), posiadałem profesjonalny telefon z szybką transmisją danych (zabawnie to brzmi dziś, gdy posiadam łączę 3 Mbps, gdy tamto “szybkie” dla mnie oznaczało 14,4 Kbps), potem też posiadałem telefon z GPRS, co zmniejszyło moje koszty użytkowania internetu w telefonie. Jednak pamiętam, że tamte strony były ubogie, były tylko z jakimiś podstawowymi informacjami, a dziś… a dziś tęsknię to prostych stron dla urządzeń mobilnych :-)

O co chodzi? Dysponuję dziś PDA, na którym często oglądam strony internetowe będąc podłączonym do jakiegoś przygodnego hot-spotu. I choć szybkość transmisji dziś nie jest problemem, to problemem staje się wielkość mojego urządzenia. Niestety - strony internetowe to dostosowane w większości nie są do małych ekranów i wygląd niektórych rzeczy jest tragiczny (także z powodów błędów samej przeglądaarki). W sytuacji przeciwnej jest jednak np. Google, z którego mobilnej wersji GMaila przeglądam czy aby nowej poczty nie ma. Dobrze stworzone strony oparte o warstwy też czyta się często nie najgorzej (aczkolwiek są wyjątki). Ale czy wiecie co mnie obecnie najbardziej denerwuje? Ta technologia, która jest podstawą ostatnio całego szumu, cudownie odnaleziony XMLHttpRequest, znany dziś jako Ajax. Ostatnio sobie chciałem poczytać blipa, wielu moich znajomych (internetowych) tam blipuje, niestety strona główna okazała się średnio użyteczna - Pocket Internet Explorer (swoją drogą nie jest taka zła ta przeglądarka, ale Operę Mobile będę musiał wypróbować) nie umie Ajaksa. A czy ktoś nie wie czy w Windows Mobile 6 nie została wprowadzona jakaś nowa wersja tej przeglądarki, bo ta z Windows Mobile 2005 ma problemy z rozumieniem skomplikowanych CSS… Choć ja czekam na Microsoft Deepfish.

Mam nadzieję, że potencjał małych urządzeń przenośnych zostanie dostrzeżony i pojawi się więcej stron dostosowanych do urządzeń mobilnych. Bo dzięki boomowi na sieci bezprzewodowe, dzięki Symbianowi coraz popularniejszemu, dzięki Operze Mini, wreszcie internet mobilny wyrósł z powijaków.

A ciekawe jaki wpływ będzie miał “cudowny” iPhone.

Technorati Tags: , , , , ,

| Komentarze (9)

Safari 3 beta dla Windows

Stało się, przeglądarka znana dotychczas tylko z systemu MacOS wraz z wersją 3 beta zawitała także na platformę Windows. Powitajmy Safari. Beta jest do pobrania. Pojawiła się dobre kilka minut temu, więc mogą być problemy z pobieraniem, a ja mogę być pierwszy w polskiej blogosferze, który cokolwiek na ten temat pisze ;-)

Do pobrania u producenta.

ktos.info na Safari 3 beta pod Windows

Uwagi na szybko:

  • Jest szybka. Wyraźnie szybsza od Firefoksa
  • Nie pasuje wizualnie do systemu. Ponoć to tak ma być? Dziwne według mnie
  • Po maksymalizacji okna, minimalizacji i przywróceniu już nie jest na cały mój panoramiczny ekran…
  • Minimalizacja okna nie wywołuje “animacji” minimalizacji - znowu nie współgra z systemem
  • Maksymalizacja okna przeglądarki nie jest płynna
  • Niektóre strony się kompletnie rozsypują, brak nagłówków, linków i różnych takich rzeczy.
  • Ciekawe kiedy pierwszego crasha zaliczę.

To jest beta, więc błędy są zrozumiałe. Do codziennego użytkowania już widzę, że się nie nadaje - zbyt wiele stron się kompletnie rozsypuje - brak renderingu nagłówków, list, a zwłaszcza linków wyklucza Safari z normalnego użycia. Ale to beta.

Mam nadzieję, że wersja finalna będzie znacznie lepsza.
Ale i tak Safari dla Windows uznaję za dziwny twór. Czyżby Apple pozbywał się MacOS? ;-)

Uwagi po dłuższej chwili

  • Wysypuje się na dodawaniu do zakładek
  • Pokazuje że powinna być zreinstalowana przy stronie do której nie może się odwołać
  • Test Acid2 pokazuje się - ale dopiero jak się pokręci scrollem i ustawi “buźkę” jak trzeba
  • Nie zamyka kart śródklikiem myszy
  • Gdzie to ma otwieranie nowych, pustych kart przez dwuklik myszy na pustym miejscu?

| Komentarze (6)

The way of the potato

Nie, nie chodzi mi o krótki komiks, który był pod tym samym tytułem. Chodzi mi o pewną drogę, jaką ja przeszedłem. Nibbrek zadał mi na Jabberze pytanie, ile ja umiałem, z informatyki, mając 14 lat. Odpowiedziałem (i mam nadzieję, że doszło, bo musiałem skorzystać z e-maila, bo docelowy serwer XMPP nie odpowiedział), a potem sam się zacząłem zastanawiać. Jak to wyszło, że siedzę teraz i studiuję informatykę? Nie wiem, nie potrafię ocenić co mnie tak właściwie skłoniło.

Wiem jednak jedno - że studia informatyczne, to na początku przynajmniej, nie było to, o czym myślałem. Teraz jest też kilka przedmiotów, których albo jeszcze nie widzę sensu, albo one w potencjalnej pracy informatyka - zwłaszcza programisty - nie mają sensu. Z drugiej strony wiele się nauczyłem. Nie tylko o tym jak ten komputer działa, tak od znacznie niższego poziomu. Pomimo nudnych wykładów dowiedziałem się. że lepiej sortować niż poprzez scalanie się nie da. I mam nadzieję, że dowiem się wielu innych rzeczy. Choć niezmiernie narzekam na niepotrzebność niektórych przedmiotów, na ich “trudność”, to czasem, po jakimś czasie, widzę, że to było jednak potrzebne. No cóz, taki urok studiowania.

Wracając jednak do tej mojej drogi - z komputerami mam do czynienia od 12 lat. Od 1995 roku, a najbardziej to od listopada, gdy dostałem mojego pierwszego 486 DX4 100 MHz z 8 MB RAM i CD-ROM o zabójczej szybkości 2x. Zaczynałem od DOS-a 6.22, od Windows (for Workgroups) 3.11, od Worda 6.0… Zaczynałem się uczyć, czytałem książki, prenumerowałem PC World Komputer od chyba 1997 do 2000 roku blisko. Uczyłem się, pisałem jakieś bzdury w plikach wsadowych i tak dalej. Oczywiście w międzyczasie grałem w wiele różnych genialnych gier, ale to swoją drogą, bo ma być o innej drodze ;-) W okolicach lipca 1999 roku zacząłem się uczyć języka programowania QBASIC. Interpreter był dostępny w DOS-ie wtedy, uczyłem się go wraz ze znajomym (pozdrawiam!) (skądinąd mam niesamowite wrażenie, że już kiedyś pisałem takie słowa na tym blogu). I choć jeden z najwcześniejszych programów jakie napisałem miał działanie i wygląd niezmiernie zaawansowane, to potem coś z tego wyszło lepszego.


' "Głupi żart", czyli "wirus" napisany w QBASIC-u, o nazwie Houd.
' 1999 rok.
CLS
COLOR 7
LOCATE 1, 1: PRINT "C:>"
SLEEP 2
LOCATE 1, 1: PRINT "C:>for"
SLEEP 2
LOCATE 1, 1: PRINT "C:>format"
SLEEP 2
LOCATE 1, 1: PRINT "C:>format c:"
SLEEP 2
LOCATE 1, 1: PRINT "C:>format c: /s /q"
SLEEP 2
CLS
COLOR 12
BEEP
BEEP
PRINT "Joke!"
SLEEP 2

Oprócz rozwijania bardzo umiejętności w QBASIC-u to jednak mimo wszystko spora część tych programów to działała tylko i wyłącznie na instrukcjach skoku. W owym czasie ze wspomnianym znajomym tworzyliśmy w tym języku swoje “systemy operacyjne”, a raczej programy, które je miały udawać. Aż… doszliśmy do granic możliwości interpretera, który powyżej dwóchtysięcy iluśtam linii kodu nie dawał rady. Aczkolwiek jak dzisiaj patrzę na niektóre rzeczy, to dało by się tam wiele rzeczy skrócić używając… pętli. Tak, bo ani pętli, ani wcięć, zero algorytmiki… Ale 66 KB kodu ostatniej wersji “systemu” było jednak osiągnięciem - choć nie robił kompletnie nic :-)

Potem uczyłem się Turbo Pascala, po drodze mając krótki romans z Turbo Basiciem który nie spełnił pewnych oczekiwań, jednak zostało to przerwane. Potem jakoś pojawiło się Delphi (1.02), w którym napisałem kilka innych totalnych bzdur. To był rok 2001. Oprócz nauki Delphi zacząłem uczyć się PHP, ale już wcześniej bardzo interesowało mnie tworzenie stron internetowych, uczyłem się HTML, i prowadziłem pewną stronę internetową. W 2001 albo i 2002 pojawiłem się na pewnym serwisie (i chyba mniej więcej wtedy pojawił się mój dzisiejszy nick). I z Delphi miałem romans do 2006 roku aż. Obecnie nie dotykałem go od około roku… Ale w Delphi nauczyłem się naprawdę programować, choć zacząłem uznawać, że coś umiem dopiero w okolicach 2005 roku - mimo, że niektórzy mówili mi to wcześniej. Jednak nadal jestem pewny, że są setki rzeczy, których nie robiłem, a uczyć się trzeba zawsze. Skromność? Być może. Albo po prostu obiektywne spojrzenie. Niemniej w Delphi uczestniczyłem w projekcie PilotMP3, rozwijałem klasę TXMLINI oraz napisałem kilka innych rzeczy, o które do dziś jestem czasem w mejlach proszony. Wtedy też zacząłem nazywać projekty nazwami kodowymi, które czasem zostawały dla programu, a czasem ginęły. Gorzej jest, że po tych paru latach jak spoglądam na dysk i widzę “Ariadna”, “Izis” czy “Ring” to nie zawsze wiem co ten program miał robić :-)

A PHP? Na początku nie wyglądało różowo, ale co ciekawe (i zaskakujące) - nie zaczynałem od nauki bazy danych MySQL. Wielu tak zaczynało, wielu też zaczynało od serwera Apache w formie PhpTriad czy Krasnal. A ja zacząłem… od Microsoft Access z którym PHP łączyło się przez ODBC. I serwera Xitami, z ręcznym konfigurowaniem PHP. Bo tak w pewnej książce było. MySQL pojawił się gdzieś dopiero znacznie dalej. I stąd mi zostało, że nie lubię automatów, ale z drugiej strony konfiguracja Apache czasem mnie załamuje.

<?
/* Przykładowy fragment chyba logowania do jakiegoś
tworzonego forum dyskusyjnego. Kodowo "Nuke", 2002 rok */
$baza=odbc_connect("nuke", "", "", "");
$sql="SELECT * FROM Użytkownicy";
$rst=odbc_exec($baza,$sql);
$i=1;
$test=1;
$pusty=odbc_fetch_row($rst,1);
while ($pusty) {
if ($pusty) {
if (odbc_result($rst,1) == $imie) {
if (odbc_result($rst,2) == $haslo) {
echo ("<p>Login prawidłowy ".$imie."!");
echo ("<p><a href=baza.php?imie=".$imie.">
Kliknij, aby zobaczyć bazę postów</a></p>");
$test=0;
break;
}
}
$i++;
}
$pusty=odbc_fetch_row($rst,$i);
}
if ($test <> 0)
echo ("<p><b>Nieprawidłowy login!</b></p>");
echo ("<p><a href=forum.html>Zaloguj ponownie</a></p>");
odbc_close_all();
?>

A co potem? A potem siedziałem dalej w tym i uczyłem się dalej. Siedzę w PHP, siedzę w XHTML i CSS (gdzieś po drodze zostałem adwokatem standardów sieciowych, który potem złagodniał), coś umiem zrobić w C, co nieco w C++, uczę się C#… W okolicach 2001 roku przeczytałem o Javie, a potem używałem kilku programów napisanych w Javie, a jej szybkość mnie odrzuca do dziś (aż dziw, że .NET jakoś toleruję). A na dysku mam, łącznie, 82 projekty, jedne w Delphi, inne w XHTML, inne w C#, a inne w PHP.

Rozpisałem się o sobie prywatnie, ale to wszystko ma jeden morał. Nieważne ile umiałeś w wielu iluś lat. Znam takiego, co programował, gdy ja bawiłem się klockami Lego. I takiego, co programować zaczął niedawno, a jest naprawdę dobry. Po prostu trzeba mieć chęć i trzeba - niestety - się uczyć, rozwijać, pisać, czytać i programować. Bez chęci ani rusz.

I nie zachęcam nikogo do pójścia w moje ślady, bo znaleźć własną drogę jest najlepiej.

| Komentarze (11)