Jak zabezpieczyć serwis sprzedażowy

redakcja 20-10-2010, 16:45

Przystępując do tworzenia witryny swego e-sklepu lub zlecając to komukolwiek, sprzedawca nie może zaniedbać kwestii bezpieczeństwa. Błędy popełnione na etapie planowania bywają bardzo trudne do usunięcia w przyszłości. W wyniku niewłaściwego zabezpieczenia serwisu może dojść nie tylko do spadku zadowolenia klientów, ale także do strat finansowych powstałych na skutek kradzieży. Przygotowaliśmy krótki przewodnik, na co trzeba zwrócić uwagę w pierwszej kolejności.

Czy warto stosować szyfrowanie?

Dane wprowadzone przez użytkownika do formularza są przesyłane przez sieć, mijając wiele routerów i serwerów, zanim dotrą do miejsca przeznaczenia. Z reguły urządzenia te tylko monitorują zajętość pasma, jeśli jednak cyberprzestępca zdobędzie kontrolę nad jednym z nich, to będzie mógł śledzić wszystkie przesyłki. Istnieją narzędzia nazywane snifferami, które służą do przechwytywania transmisji danych. Z ich pomocą osoby postronne mogą uzyskać dostęp do informacji niekiedy tak poufnych, jak hasła. Aby ograniczyć możliwość ataku, warto wykorzystywać transmisję szyfrowaną, gdyż jej przechwycenie nie grozi odczytaniem. W bankowości internetowej i handlu elektronicznym powszechnie stosuje się bezpieczne połączenia internetowe (zob. W trosce o bezpieczeństwo, czyli do czego służy SSL).

Przesyłane dane właściciel sklepu internetowego może zaszyfrować za pomocą protokołu SSL (ang. Secure Sockets Layer) lub jego rozwinięcia TLS (ang. Transport Layer Security). Aby to zrobić, musi najpierw wygenerować klucz prywatny swego hosta i żądanie certyfikatu (ang. Certificate Signing Request, w skrócie CSR). W celu wprowadzenia szyfrowanych połączeń można posłużyć się darmowym, multiplatformowym narzędziem OpenSSL. CSR należy wysłać do zaufanego centrum certyfikacji, które wystawi certyfikat potwierdzający autentyczność zgłoszonej witryny.

Istnieje wprawdzie możliwość samodzielnego wygenerowania certyfikatu (również przy użyciu OpenSSL), nie jest to jednak zalecane. W przeciwieństwie do certyfikatów podpisanych przez znane i z przeważnie zagraniczne podmioty, nie będzie on obecny w popularnych przeglądarkach. Spowoduje to wyświetlanie się komunikatu o niezaufanym połączeniu podczas odwiedzin na zabezpieczonej w ten sposób stronie. Raczej nie wzbudzi to zaufania klientów. W Polsce w 2010 r. było 5 kwalifikowanych podmiotów świadczących usługi certyfikacyjne.

Bez hashowania ani rusz

Jednym z często popełnianych błędów jest przechowywanie haseł w postaci jawnej, ewentualna kradzież bazy danych może bowiem w takim przypadku przysporzyć użytkownikom wiele kłopotów. Aby zminimalizować ryzyko, należy stosować program, który korzysta z funkcji hashującej. Podany przez użytkownika ciąg znaków jednoznacznie odwzorowywany jest na klucz o stałej długości. Do najczęściej używanych algorytmów należał SHA-1 (ang. Secure Hash Algorithm). Inny algorytm MD5 (ang. Message Digest 5) nie uznaje się obecnie za bezpieczny i nie jest on zalecany. Od 2010 r. amerykański National Institute of Standards and Technology zaleca stosowanie funkcji skrótów SHA-2.

System, aby podjąć decyzję, czy wpuścić użytkownika do środka, generuje hash hasła wpisanego w formularz logowania i porównuje z zapamiętanym w bazie. Jeśli skróty są identyczne, udziela dostępu. Ponieważ algorytm jest jednoznaczny, takie samo hasło generuje zawsze taki sam hash. To natomiast, że funkcje skrótu są jednostronne (nie istnieje funkcja odwrotna), gwarantuje, że na podstawie skrótu nie da się algorytmicznie odtworzyć hasła. Tu właśnie rodzi się nasze bezpieczeństwo – tłumaczy Michał Piszczek, kierownik Działu Programistów w firmie ESC S.A. (zob. Hashowanie haseł użytkowników – czy to konieczne?).

Cyberprzestępcy dążą oczywiście do opracowania metod umożliwiających złamanie zahashowanych haseł. Proces ten można utrudnić, stosując tzw. salt – przed przekształceniem każdego hasła należy dokleić do niego np. 100-znakowy ciąg definiowany w kodzie źródłowym. Spowoduje to, że moc przechowywanych w bazie haseł wzrośnie do tego stopnia, że staną się one praktycznie niepodatne na atak.

Zasada ograniczonego zaufania

Specjaliści ds. bezpieczeństwa zalecają nie ufać żadnym danym, które użytkownik może wprowadzić przy użyciu niezabezpieczonego formularza. Jednym z najpopularniejszych ataków, przed którym nie ustrzegły się nawet znane instytucje, jest XSS (ang. cross-site scripting), czyli zagnieżdżanie złośliwego kodu w oryginalnej treści witryny. Z jego pomocą można przekierować użytkownika na spreparowaną stronę, zainstalować w jego systemie konia trojańskiego, ukraść poufne dane przechowywane w plikach cookies lub sfałszować zawartość oryginalnego serwisu (zob. Co może grozić za atak XSS).

Chcąc tego uniknąć, trzeba stosować filtrowanie treści generowanych przez klientów, zwłaszcza pod kątem znaczników HTML. Warto sprawdzać, czy wprowadzone dane odpowiadają formatowi, którego oczekiwaliśmy (np. numery telefonów składają się z cyfr, wpisanie czegoś innego powinno skutkować wyświetleniem komunikatu o błędzie). Pozwoli to uchronić się także przed inną metodą ataku, znaną jako SQL Injection. Dzięki umiejętnej modyfikacji zapytania SQL cyberprzestępca może uzyskać nieautoryzowany dostęp do bazy danych, pobrać interesujące go informacje, dodać swoje, zmienić strukturę bazy czy nawet ją usunąć. Podstawową linią obrony przeciwko takim atakom jest kontrola danych przekazywanych za pomocą formularzy połączona z odpowiednią konfiguracją środowiska bazodanowego.

Warto też pamiętać o atakach CSRF (ang. cross-site request forgery), które polegają na zmuszeniu nic niepodejrzewającego użytkownika do wykonania określonej akcji w czasie trwania uwierzytelnionej sesji, np. umieszczenia w swoim koszyku określonego produktu z oferty sklepu. Istnieje wiele metod utrudniających przeprowadzanie takich ataków. Jedną z najpopularniejszych jest dodatkowa autoryzacja w przypadku działań, które mogłyby mieć niepożądane skutki. Innym, równie popularnym sposobem obrony jest dodanie do formularza ukrytego pola, zawierającego indywidualny identyfikator wykonywanej operacji, który będzie generowany po stronie serwera. Każda akcja niemająca poprawnego identyfikatora zostanie odrzucona.

Zapominalstwo drogo kosztuje

Spośród technologii służących do tworzenia dynamicznych stron internetowych największą popularnością cieszy się w naszym kraju PHP. Ma to zapewne związek z bezproblemową dostępnością usług hostingowych wspierających to rozwiązanie. Powstają jednak firmy hostujące serwisy opracowane przy użyciu ASP.NET i JSP. Którąkolwiek technologię byśmy nie wybrali, powinniśmy pamiętać o regularnej aktualizacji użytego oprogramowania, cyberprzestępcy starają się bowiem wykorzystać każdą znalezioną lukę do swoich celów.

Dotyczy to również osób, które zdecydują się zbudować swój sklep w oparciu o jeden z dostępnych na rynku systemów zarządzania treścią (ang. Content Management System, CMS). O tym, jak ważne jest natychmiastowe instalowanie łatek bezpieczeństwa, przekonali się w 2008 roku użytkownicy systemu Joomla. Przez polską sieć przetoczyła się wówczas fala ataków zainicjowana przez tureckich script kiddies – domorosłych „hakerów” uzbrojonych w gotowe narzędzia do łamania zabezpieczeń (zob. Luki w Joomla! aktywnie wykorzystywane).

Równie ważna jest poprawna konfiguracja wykorzystanego oprogramowania, co sprowadza się często do zmiany ustawień domyślnych. Łatwe do odgadnięcia hasło administratora, możliwość zarządzania bazą danych z każdego komputera, anonimowy dostęp do serwera FTP – to typowe błędy, których przeoczenie może okazać się katastrofalne w skutkach. Nie należy też zapominać o gruntownym przetestowaniu serwisu i to nie bezpośrednio przed jego udostępnieniem, ale na różnych etapach powstawania. Warto nie odkładać tego na ostatnią chwilę. Im później zostanie wykryty błąd, tym wyższe mogą być koszty jego naprawy.


Źródło: DI24.pl
  
znajdź w serwisie


RSS - Wywiad
Wywiad  
RSS - Interwencje
RSS - Porady
Porady  
RSS - Listy
Listy  
« Czerwiec 2020»
PoWtŚrCzwPtSbNd
1234567
891011121314
15161718192021
22232425262728
2930