Browsed by
Tag: architecture

Content Security Policy – poziomy dojrzałości

Content Security Policy – poziomy dojrzałości

Tworzenie bezpiecznych aplikacji internetowych nie jest proste. Bardzo łatwo jest zostawić w nich podatności, narażając użytkowników na różne zagrożenia. Można by tu wymieniać dziesiątki z nich, ale skupmy się tutaj na kilku poniższych: Clickjacking – wyświetlenie użytkownikowi zachęty do kliknięcia, wskutek którego wykona on niechcianą akcję w innej aplikacji,  ManInMiddle – możliwość podsłuchania i modyfikacji requestów aplikacji do serwera,  Formjacking – przejęcie danych wprowadzanych przez użytkownika w formularzach,  Unvalidated Redirects – niezaplanowane przez twórców przekierowania na zewnętrzne adresy, XSS – wykonanie…

Read More Read More

Automatyczne testowanie XSS

Automatyczne testowanie XSS

W ramach rozszerzenia poprzedniego artykułu o ręcznym szukaniu podatności typu XSS warto jeszcze wspomnieć o metodzie na automatyczne testowanie XSS. Jest to możliwe z użyciem OWASP ZAP.Zobaczmy krok po kroku w jaki sposób. Instrukcja testów Na początku musimy się upewnić, że mamy zainstalowane dodatki: https://www.zaproxy.org/docs/desktop/addons/active-scan-rules/ https://www.zaproxy.org/docs/desktop/addons/dom-xss-active-scan-rule/ Następnie przechodzimy do testowania. Każdorazowo testy w OWASP ZAP należy zacząć od definicji zapytań (requestów) w ramach aplikacji – etap discovery (odkrywania aplikacji). Najprościej zrobić to ręcznie za pomocą odpowiednio skonfigurowanej przeglądarki. Możemy ją…

Read More Read More

Jak podejmować wystarczająco dobre decyzje? – podejście analityczne

Jak podejmować wystarczająco dobre decyzje? – podejście analityczne

W tym artykule chciałbym Ci krok po kroku zaprezentować moje podejście do dokonywania wyborów. Ale nie byle jakich wyborów, tylko wyborów dostatecznie dobrych. Jest to o tyle istotne, że w dzisiejszym świecie bardzo łatwo jest popaść w tak zwany paraliż decyzyjny. Sytuację, gdy analiza opcji przed podjęciem decyzji jest ważniejsza niż sama decyzja. Dość łatwo szukając idealnego rozwiązania, analizować coraz to nowe opcje lub też pogłębiać analizę tych już znanych. W efekcie ciągle nie możemy się zdecydować, co wybrać. Sytuacja…

Read More Read More

Narzędzia do rysowania diagramów

Narzędzia do rysowania diagramów

Mam wrażenie, że diagramy są jednym z moich najczęściej używanych narzędzi jako architekta i konsultanta. Język wizualny jest jednym z najbardziej uniwersalnych i najprostszych sposobów przekazywania i przede wszystkim uwspólnienia wiedzy. W związku z tym do codziennej pracy potrzebuję dobrego narzędzia do rysowania diagramów. Takich narzędzi jest bardzo wiele, jednak zanim zaczniemy zastanawiać się, które z nich wybrać (lub w ogóle jakie mamy możliwości), to trzeba zdefiniować nasze wymagania. W moim przypadku bardzo mocno zależy mi na swobodzie tworzenia diagramów….

Read More Read More

Jak zrobić wdrożenie aplikacji bez przestojów?

Jak zrobić wdrożenie aplikacji bez przestojów?

Dziś porozmawiamy o wdrożeniach i o tym, w jaki sposób można zrobić wdrożenie aplikacji bez przestojów, żeby żaden z naszych klientów tego nie zauważył. Jak wygląda normalne wdrożenie aplikacji? Gdy wdrażamy kolejną wersję naszej aplikacji na serwer (mowa tu w szczególności o aplikacjach webowych), musimy wykonać kilka kroków: Wyłączamy usługę.  Wgrywany nowe pliki.  Włączamy usługę.  Poniższa animacja świetnie to obrazuje. Nie jest moja, ale bardzo mi się spodobała. Tak więc pomiędzy pierwszym a ostatnim krokiem mamy przestój w działaniu aplikacji….

Read More Read More

Rozwój aplikacji bez rewolucji u klientów

Rozwój aplikacji bez rewolucji u klientów

W pracy związanej z rozwojem oprogramowania naturalne jest, że każda aplikacja, każdy system, który tworzymy prędzej czy później będzie musiał być zmodyfikowany. To normalne, świat się zmienia, wymagania biznesowe też, dlatego nasze systemy muszą dopasowywać się do tych zmian. Niektóre modyfikacje są małe i nie wpływają zbyt mocno na system. Jednak prędzej czy później nadchodzą potężne zmiany, które potrafią wywrócić nasze dotychczasowe myślenie do góry nogami. Jak więc wdrażać takie zmiany w systemach w bezpieczny sposób, upewniając się, że nasi…

Read More Read More

Warstwa kompatybilności – najłatwiejszy sposób na zapewnienie kompatybilności wstecznej

Warstwa kompatybilności – najłatwiejszy sposób na zapewnienie kompatybilności wstecznej

W artykule Kompatybilność wsteczna – co to oznacza i jak o nią dbać? opowiedzieliśmy już sobie czym jest kompatybilność wsteczna. Z kolei w Rozwój aplikacji bez rewolucji u klientów pokazaliśmy, czym grozi wprowadzanie zmian niekompatybilnych wstecz.Tym razem skupimy się na jednym z wzorców pomocnym w zapewnieniu kompatybilności wstecznej jakim jest warstwa kompatybilności. Metaforycznie Jaki mamy problem? Na początku zastanówmy się jak zapewnić kompatybilność wsteczną na bardziej życiowym przykładzie.Załóżmy że: chcemy wyremontować odcinek drogi ekspresowej, przejeżdża nią ok. 20 000 samochodów…

Read More Read More

Kompatybilność wsteczna – co to oznacza i jak o nią dbać?

Kompatybilność wsteczna – co to oznacza i jak o nią dbać?

Czym jest kompatybilność wsteczna? Kompatybilność wsteczna – najłatwiej wytłumaczyć to, a nawet zobaczyć, na codziennym przykładzie. Pewnie większość z Was kojarzy, że w telefonach jeszcze niedawno standardem były ładowarki ze złączem USB Typu B, jednak od pewnego czasu standardem są już złącza typu C. Jak możecie zauważyć na diagramie – oba te złącza są kompletnie różne. Czyli po prostu wtyczka pasująca do gniazda pierwszego typu, nie będzie pasowała do gniazda drugiego złącza. Wtedy możemy powiedzieć, że te dwa interfejsy (wtyczki)…

Read More Read More

Jak modelować zagrożenia za pomocą STRIDE?

Jak modelować zagrożenia za pomocą STRIDE?

Praktyka modelowania zagrożeń podczas tworzenia oprogramowania wymaga sporego przygotowania i dużej wiedzy ze strony zespołu, który ją przeprowadza. Jeżeli zespoły deweloperskie dopiero zaczynają stosować takie podejście, warto im ułatwić wejście w to zagadnienie. Temu służy właśnie STRIDE. W tym celu przydatne jest obudowanie modelowania zagrożeń w łatwy do zrozumienia i powtarzany proces. Dzięki temu nawet osoby, które na co dzień nie zajmują się bezpieczeństwem, będą w stanie w sprawny sposób brać udział w wymyślaniu kolejnych zagrożeń. Jako przykład załóżmy, że…

Read More Read More

Security vs Usability – co wybrać podczas dewelopmentu?

Security vs Usability – co wybrać podczas dewelopmentu?

Zapewne nie tylko w projektowaniu rozwiązań IT nie można mieć wszystkiego. Czy również w zakresie Security czy Usability trzeba wybierać jedno? Gdy myślimy o tym, w jaki sposób zrealizować wymagania do tworzonego przez nas systemu, często zastanawiamy się, które aspekty powinny być najważniejsze. Na czym się skupić? Łatwo to zobrazować na poniższym, popularnym diagramie. Najchętniej stworzylibyśmy daną funkcjonalność zgodnie z wymaganiami klienta, łatwą w użyciu i w pełni bezpieczną.  Jednak w zdecydowanej większości przypadków jest to bardzo trudne. Często wymagania…

Read More Read More