Większość języków programowania wysokiego poziomu dostarcza struktury implementujące tablice asocjacyjne, inaczej zwane słownikami. Struktury te umożliwiają przechowywanie zbioru wartości skojarzonych z obiektami – kluczami – w taki sposób, że wyszukiwanie wartości na podstawie klucza jest bardzo szybkie. Scala dysponuje standardowo słownikami wykorzystującymi tablice haszujące (HashMap) oraz drzewa czerwono-czarne (TreeMap). Obie implementacje są dostępne w wersjach mutowalnej i niemutowalnej.
Czytaj dalej
Identyfikacja użytkownika jest niezbędnym elementem prawie każdej aplikacji dostępnej zdalnie. Najczęściej identyfikacji dokonujemy poprzez weryfikację dostarczonej przez użytkownika kombinacji login / hasło. Po uwierzytelnieniu umożliwiamy użytkownikowi korzystanie z całości lub części funkcjonalności aplikacji. Jak w takim razie najlepiej zrealizować proces identyfikacji i uwierzytelnienia w GWT?
Czytaj dalej
Chyba każda osoba interesująca się sieciami komputerowymi i ich bezpieczeństwem zetknęła się z atakiem typu „Buffer overflow”. Idea działania większości też jest znana, jednak kojarzy się z jakimiś niesamowitymi sztuczkami. W tym artykule chcę przybliżyć jak w szczegółach wygląda podatny kod oraz jak trzeba spreparować specjalny ciąg wejściowy aby doprowadzić to ataku. Czytaj dalej
JEE 6 czas zacząć
Artykuł ten jest pierwszym z serii wpisów poświęconych zagadnieniom bezpieczeństwa aplikacji Webowych. W niniejszym artykule zostanie omówiona możliwość wykorzystania podatności typu injection na stronach bez pól tekstowych oraz wykorzystanie narzędzia WebScarab do przeprowadzenia takiego ataku.
Wykorzystanie podatności wstrzyknięcia (ang. Injection Flaw) jest częstą przyczyną włamań do aplikacji internetowych. Problemy związane z bezpieczeństwem aplikacji dotyczące wstrzyknięcia niepoprawnych danych na stronach z polami testowymi są powszechne (w szczególności ataki typu Cross Site Scripting, XSS). Jednak możliwość wykorzystania podatności wstrzyknięcia na stronach bez pól tekstowych nie jest już tak oczywista.
Współczesne systemy relacyjnych baz danych, również te z otwartym kodem źródłowym, umożliwiają tworzenie bardzo złożonych zapytań SQL. Poprzez umieszczanie podzapytań w seksji SELECT, FROM oraz WHERE, jak również przez łączenie zapytań za pomocą operatorów takich jak UNION czy INTERSECT, nie trudno napisać zapytanie, które nie zmieści się na monitorze. Ta elastyczność ma niestety swoją cenę: analiza takiego złożonego zapytania jest nie lada wyzwaniem dla silnika bazy danych i, jak pokazuje praktyka, niektóre systemy baz danych nie najlepiej sobie z tym radzą. Najprościej wytłumaczyć to na przykładzie, wzorowanym na prawdziwym przypadku.
Serdecznie witamy na blogu konsultantów firmy Sages. Od dzisiaj rozpoczynamy publikację artykułów, przygotowanych przez naszych specjalistów, w których postaramy się przedstawić rozwiązania problemów, na jakie często natrafiamy w czasie naszej pracy, wskazać ciekawe zastosowania i integracje istniejących technologii, a także zaprezentować pomysły, który dopiero w przyszłości mogą potencjalnie stać się codziennie wykorzystywanymi narzędziami.
Liczymy na odzew i zapraszamy do regularnej lektury!
Confitura 2011 – wrażenia ...
Jakub Koperwas
Wrażenia po tegorocznej Confiturze
W sobotę miałem przyjemność występować jako prelegent i przedstawiciel sponsora na konferencji Confitura (dawniej Javarsovia).
Ogólnie lubię konferencje, na których ludzie faktycznie chcą się czegoś dowiedzieć. Bardzo mi było miło że salę miałem pełniutką – mam tylko nadzieje, że dla większości z audytorium nie był to czas stracony, ale nie mnie oceniać.
Co do innych, udałem się na następujące prezentacje:
Patrycja Wegrzynowicz – Patterns and Anti-Patterns in Hibernate
Dla mnie temat świetny. Lubię “caveatsy”, a Patrycja zna je świetnie i potrafi je wyłuszczyć. Ma świetny kontakt z ludźmi, nadto podzielam Jej pogląd, że w tej branży nie wolno się zwalniać z obowiązku myślenia i polegać na “autorytetach”. Jedyne “ale” to takie, że ja chciałbym mieć więcej treści nawet kosztem tego, że prelegent je poda na slajdzie i wytłumaczy a nie pozwoli samemu do tego dojść. Słowem – jak mam przed sobą eksperta to chcę wydusić z niego ile się da.
Tomasz Kopacz – Quo Vadis IT
Zadziwiło mnie nieliczne audytorium. Wykładu nie da się streścić, to trzeba wysłuchać. Tomek ma świetny dystans – jest na tyle ogólny by zobaczyć coś więcej niż linijki kodu, a zarazem z jego prezentacji można wyciągnąć wiele inspiracji czy konkretnych wręcz pomysłów. Wielki szacun!
Paweł Lipiński – Re-fuck-toryzacja czyli sprowadzanie sp****go kodu na właściwe tory.
Cóż, wielka osobowość, prawdziwe show. Szkoda tylko, że sala była zbyt wielka i nie widziałem dobrze kodu. Trudno mi się w związku z tym odnieść do prezentacji bardziej merytorycznie, bo siedziałem zbyt daleko – frekwencji za to tylko pozazdrościć.
Adam Warski – Manipulacja beanami, czyli CDI Portable Extensions – Tu będę nieobiektywny – bo się trochę na temacie znam więc z informacji “jak to się robi” nie skorzystałem, bo wiem, a za to mam zastrzeżenia do przykładów Adama. Wydaję mi się ze Seam Security ma trochę więcej możliwości, niż rozwiązanie autorskie (lub firmowe – nie pamiętam) Adama. Rozumiem jednak, że CDI jest ciągle nie tak popularne, jak na to moim zdaniem zasługuje i Adam nie mógł polecieć za ambitnie.
Jacek Lis – Zdarzenia rządzą światem – jak sobie z nimi radzić? – To chyba jest mój nr jeden, temat w zasadzie mi znany, ale sposób prezentacji pozwalał jeszcze raz systematycznie sobie tą wiedzę uporządkować. Mimo iż w tym przypadku nie było wielkiego show to dla odmiany była wysoka skuteczność w przekazie wiedzy. Nadto Jacek sprawiał wrażenie jakby temat nie był “wydumany” przez autora, tylko był naturalną konsekwencją tego, co Jacek na co dzień spotyka w pracy.
To by było na tyle przemyśleń. Zobaczymy co za rok.