{"version":"https:\/\/jsonfeed.org\/version\/1.1","title":"Tomasz Kowalczyk \u2014 Blog","home_page_url":"https:\/\/tomekkowalczyk.pl\/","feed_url":"https:\/\/tomekkowalczyk.pl\/feed.json","language":"pl","description":"Senior Developer \u00b7 DevLead \u00b7 Architekt","items":[{"id":"https:\/\/tomekkowalczyk.pl\/blog\/test-doubles-w-phpunit","url":"https:\/\/tomekkowalczyk.pl\/blog\/test-doubles-w-phpunit","title":"Test doubles w PHPUNIT","summary":"Test doubles to technika w testowaniu jednostkowym, kt\u00f3ra polega na tworzeniu obiekt\u00f3w zast\u0119pczych dla rzeczywistych obiekt\u00f3w w systemie. S\u0105 one u\u017cywane do izolacji jednostki testowanej i kontrolowania jej zachowania w testach","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003ETest doubles \u003C\/strong\u003Eto technika w testowaniu jednostkowym, kt\u00f3ra polega na tworzeniu obiekt\u00f3w zast\u0119pczych dla rzeczywistych obiekt\u00f3w w systemie. S\u0105 one u\u017cywane do izolacji jednostki testowanej i kontrolowania jej zachowania w testach. \u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1666,\u0022sizeSlug\u0022:\u0022full\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-full\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/06\/Beige-Company-Organizational-Chart-Graph.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1666\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW PHPUnit, mo\u017cemy u\u017cywa\u0107 r\u00f3\u017cnych typ\u00f3w test doubles, takich jak:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003EDummy:\u003C\/strong\u003E S\u0105 to obiekty, kt\u00f3re s\u0105 przekazywane do testowanej jednostki, ale nigdy nie s\u0105 u\u017cywane.\u003Cbr\u003E\u003Cstrong\u003EFake: \u003C\/strong\u003EObiekty, kt\u00f3re maj\u0105 dzia\u0142aj\u0105c\u0105 implementacj\u0119, ale s\u0105 uproszczone do cel\u00f3w testowych.\u003Cbr\u003E\u003Cstrong\u003EStubs:\u003C\/strong\u003E Obiekty, kt\u00f3re zwracaj\u0105 wcze\u015bniej zdefiniowane odpowiedzi na wywo\u0142ania metod.\u003Cstrong\u003E\u003Cbr\u003EMocks:\u003C\/strong\u003E Obiekty, kt\u00f3re oczekuj\u0105, \u017ce okre\u015blone metody zostan\u0105 wywo\u0142ane z okre\u015blonymi parametrami.\u003Cbr\u003E\u003Cstrong\u003ESpy\u003C\/strong\u003E: Obiekty, kt\u00f3re rejestruj\u0105 informacje o interakcjach i pozwalaj\u0105 na p\u00f3\u017aniejsz\u0105 weryfikacj\u0119.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EAtrapa (Dummy)\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass OrderProcessorTest extends \\PHPUnit\\Framework\\TestCase\n{\n    public function testProcessOrder()\n    {\n        $dummyLogger = $this-\u003EcreateMock(Logger::class);\n        $orderProcessor = new OrderProcessor($dummyLogger);\n\n        $order = new Order();\n        $orderProcessor-\u003Eprocess($order);\n\n        $this-\u003EassertTrue($order-\u003EisProcessed());\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW\u0142asna implementacja\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Efinal class DummyEntityRepository implements RepositoryInterface\n{\n    public function save(Entity $entity): void\n    {\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZa\u015blepka (Stub)\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EObiekt danej klasy gdzie wszystkie metody, pola zwracaj\u0105 puste warto\u015bci NULL. Jest to nic innego jak mo\u017cliwie najprostsza implementacja danego interfejsu, kt\u00f3ra w zasadzie na nic nie reaguje poniewa\u017c jej zachowanie jest z g\u00f3ry zdefiniowane. Stubem by\u0142aby implementacja czujnika pr\u0119dko\u015bci zwracaj\u0105ca konkretn\u0105 warto\u015b\u0107.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass UserServiceTest extends \\PHPUnit\\Framework\\TestCase\n{\n    public function testGetUser()\n    {\n        $userStub = $this-\u003EcreateMock(UserRepository::class);\n        $userStub-\u003Emethod(\u0027find\u0027)-\u003EwillReturn(new User(\u0027john@example.com\u0027));\n\n        $userService = new UserService($userStub);\n        $user = $userService-\u003EgetUser(\u0027john@example.com\u0027);\n\n        $this-\u003EassertEquals(\u0027john@example.com\u0027, $user-\u003EgetEmail());\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW\u0142asna implementacja\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Efinal class StubEntityRepository implements RepositoryInterface\n{\n    public function findOneByEmail(string $email): ?Entity\n    {\n        return new Entity($email);\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EImicjacja (Mock)\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EMock to tak jakby zaprogramowana imitacja, kt\u00f3rej nie tylko przekazujemy nasze oczekiwania ale r\u00f3wnie\u017c m\u00f3wimy \u003Cstrong\u003Ejak si\u0119 ma zachowa\u0107\u003C\/strong\u003E.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass UserServiceTest extends \\PHPUnit\\Framework\\TestCase\n{\n    public function testCreateUser()\n    {\n        $userMock = $this-\u003EcreateMock(UserRepository::class);\n        $userMock-\u003Eexpects($this-\u003Eonce())\n                 -\u003Emethod(\u0027save\u0027)\n                 -\u003Ewith($this-\u003EisInstanceOf(User::class));\n\n        $userService = new UserService($userMock);\n        $userService-\u003EcreateUser(\u0027john@example.com\u0027);\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003ESzpieg (Spy)\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EImitacja kt\u00f3rej celem jest nie tyle zrobienie czego\u015b konkretnego co sprawdzenie czy co\u015b zosta\u0142o zrobione ale bez definiowania z g\u00f3ry naszych oczekiwa\u0144. Spy u\u017cywamy w celu zweryfikowania jakiego\u015b zachowania.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass UserServiceTest extends \\PHPUnit\\Framework\\TestCase\n{\n    public function testCreateUserWithSpy()\n    {\n        $userSpy = new UserRepositorySpy();\n        $userService = new UserService($userSpy);\n\n        $userService-\u003EcreateUser(\u0027john@example.com\u0027);\n\n        $this-\u003EassertTrue($userSpy-\u003EwasSaveCalled());\n        $this-\u003EassertEquals(\u0027john@example.com\u0027, $userSpy-\u003EgetLastSavedUser()-\u003EgetEmail());\n    }\n}\n\nclass UserRepositorySpy extends UserRepository\n{\n    private $saveCalled = false;\n    private $lastSavedUser;\n\n    public function save(User $user)\n    {\n        $this-\u003EsaveCalled = true;\n        $this-\u003ElastSavedUser = $user;\n    }\n\n    public function wasSaveCalled(): bool\n    {\n        return $this-\u003EsaveCalled;\n    }\n\n    public function getLastSavedUser(): ?User\n    {\n        return $this-\u003ElastSavedUser;\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EPodr\u00f3bka (Fake)\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003ETworz\u0105c fake, tworzymy tak naprawd\u0119 imitacj\u0119 bardzo zbli\u017con\u0105 do orygina\u0142u, w dalszym stopniu jednak uproszczon\u0105, najcz\u0119\u015bciej po to aby zasymulowa\u0107 konkretne zachowanie zale\u017cne od parametr\u00f3w wej\u015bciowych.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass FakeDatabaseConnection\n{\n    private $data = [];\n\n    public function insert($table, $record)\n    {\n        $this-\u003Edata[$table][] = $record;\n    }\n\n    public function getAll($table)\n    {\n        return $this-\u003Edata[$table] ?? [];\n    }\n}\n\nclass UserServiceTest extends \\PHPUnit\\Framework\\TestCase\n{\n    public function testCreateUser()\n    {\n        $fakeDb = new FakeDatabaseConnection();\n        $userService = new UserService($fakeDb);\n\n        $userService-\u003EcreateUser(\u0027john@example.com\u0027);\n\n        $users = $fakeDb-\u003EgetAll(\u0027users\u0027);\n        $this-\u003EassertCount(1, $users);\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E","date_published":"2024-06-06T22:12:58+02:00","date_modified":"2024-06-06T22:43:23+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/zwiazki-pomiedzy-klasami-w-uml","url":"https:\/\/tomekkowalczyk.pl\/blog\/zwiazki-pomiedzy-klasami-w-uml","title":"Zwi\u0105zki pomi\u0119dzy klasami w UML","summary":"W projektowaniu oprogramowania, UML (Unified Modeling Language) jest niezast\u0105pionym narz\u0119dziem do wizualizacji architektury systemu. S\u0142u\u017c\u0105 do przedstawienia struktury systemu poprzez modelowanie klas,\u2026","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW projektowaniu oprogramowania, UML (Unified Modeling Language) jest niezast\u0105pionym narz\u0119dziem do wizualizacji architektury systemu. S\u0142u\u017c\u0105 do przedstawienia struktury systemu poprzez modelowanie klas, ich atrybut\u00f3w, metod oraz relacji pomi\u0119dzy nimi. Aby zrozumie\u0107, jak tworzy\u0107 i interpretowa\u0107 te diagramy, om\u00f3wmy ich g\u0142\u00f3wne sk\u0142adniki i spos\u00f3b reprezentacji. Dzi\u015b om\u00f3wimy r\u00f3\u017cne rodzaje zwi\u0105zk\u00f3w pomi\u0119dzy klasami w UML, u\u017cywaj\u0105c przyk\u0142adu implementacji w PHP, kt\u00f3ry obejmuje klas\u0119 bazow\u0105 \u003Ccode\u003EVehicle\u003C\/code\u003E oraz pochodne klasy \u003Ccode\u003ECar\u003C\/code\u003E, \u003Ccode\u003ETruck\u003C\/code\u003E, i \u003Ccode\u003EMotorbike\u003C\/code\u003E.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading {\u0022level\u0022:3} --\u003E\n\u003Ch3 class=\u0022wp-block-heading\u0022\u003EPodstawowe Sk\u0142adniki Diagramu Klas UML\u003C\/h3\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:list {\u0022ordered\u0022:true} --\u003E\n\u003Col\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EKlasy\u003C\/strong\u003E: Reprezentowane jako prostok\u0105ty podzielone na trzy sekcje: nazwa klasy, atrybuty (pola) i metody (funkcje). Nazwa klasy jest umieszczona w g\u00f3rnej sekcji, atrybuty w \u015brodkowej, a metody w dolnej.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EZwi\u0105zki\u003C\/strong\u003E: Linie \u0142\u0105cz\u0105ce klasy reprezentuj\u0105 r\u00f3\u017cne rodzaje relacji mi\u0119dzy nimi, takie jak asocjacje, dziedziczenie, agregacje, kompozycje i zale\u017cno\u015bci.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ol\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZwi\u0105zki pomi\u0119dzy klasami\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZale\u017cno\u015b\u0107\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EZale\u017cno\u015b\u0107 (ang. dependency) jest \u003Cstrong\u003Enajs\u0142absz\u0105 relacj\u0105 jaka mo\u017ce wyst\u0119powa\u0107 pomi\u0119dzy dwoma klasami\u003C\/strong\u003E. Zale\u017cno\u015b\u0107 wyst\u0119puje, gdy jedna klasa wykorzystuje inn\u0105 klas\u0119 do wykonania swojej funkcji, ale nie przechowuje jej jako stanu. Na przyk\u0142ad, je\u015bli klasa Vehicle u\u017cywa klasy Engine do przeprowadzenia operacji start(), ale nie przechowuje Engine jako atrybutu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass Engine {\n    public function start() {\n        echo \u0022Silnik uruchomiony.\u0022;\n    }\n}\n\nclass Vehicle {\n    public function startEngine(Engine $engine) {\n        $engine-\u003Estart();\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EPowy\u017csz\u0105 zale\u017cno\u015b\u0107 nale\u017cy czyta\u0107 w spos\u00f3b: \u003Cstrong\u003Eklasa Vehicle jest zale\u017cna od klasy Engine\u003C\/strong\u003E.\u003Cbr\u003E\u003Cbr\u003ESystem powinien mie\u0107 jak najmniej zale\u017cno\u015bci, jednak w miar\u0119 rozwoju projektu nie da si\u0119 ich unikn\u0105\u0107. Aby pozby\u0107 si\u0119 zale\u017cno\u015bci mo\u017cna jako parametr funkcji przekaza\u0107 kilka typ\u00f3w prostych, zamiast jednej klasy. Spowoduje to zmniejszenie ilo\u015bci zale\u017cno\u015bci, jednak rodzi inne problemy (tzw. nadu\u017cywanie typ\u00f3w prostych (ang. primitive obsession)).\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1642,\u0022sizeSlug\u0022:\u0022large\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-large\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/zaleznosc-uml-php-1024x576.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1642\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EAsocjacja\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EAsocjacja odnosi si\u0119 do zwi\u0105zku, gdzie \u003Cstrong\u003Eobiekty jednej klasy mog\u0105 by\u0107 powi\u0105zane z obiektami innej klasy\u003C\/strong\u003E (np. jeden-do-wielu, wiele-do-wielu). Przyk\u0142adem mo\u017ce by\u0107 relacja mi\u0119dzy Vehicle a Driver, gdzie jeden pojazd mo\u017ce by\u0107 prowadzony przez wielu kierowc\u00f3w.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass Driver {\n    private $name;\n\n    public function __construct($name) {\n        $this-\u003Ename = $name;\n    }\n}\n\nclass Vehicle {\n    private $drivers = [];\n\n    public function addDriver(Driver $driver) {\n        $this-\u003Edrivers[] = $driver;\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003Ejest silniejszym rodzajem relacji ni\u017c zale\u017cno\u015b\u0107. Asocjacje mog\u0105 by\u0107 jednokierunkowe, dwukierunkowe oraz nieokre\u015blone (bez grot\u00f3w na ko\u0144cu linii). W diagramach klas UML asocjacji u\u017cywa si\u0119 bardzo cz\u0119sto. Wynika to z faktu jej wysokiego poziomu abstrakcyjno\u015bci.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1644,\u0022sizeSlug\u0022:\u0022large\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-large\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/asocjacja-uml-php-1024x576.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1644\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EAgregacja cz\u0119\u015bciowa\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003EAgregacja cz\u0119\u015bciowa\u003C\/strong\u003E to zwi\u0105zek typu ca\u0142o\u015b\u0107-cz\u0119\u015b\u0107, gdzie cz\u0119\u015b\u0107 (komponent) mo\u017ce istnie\u0107 niezale\u017cnie od ca\u0142o\u015bci. Na przyk\u0142ad, \u003Ccode\u003ECar\u003C\/code\u003E mo\u017ce mie\u0107 \u003Ccode\u003EWheels\u003C\/code\u003E, ale ko\u0142a mog\u0105 istnie\u0107 tak\u017ce poza samochodem.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass Wheel {\n    public $size;\n    \n    public function __construct($size) {\n        $this-\u003Esize = $size;\n    }\n}\n\nclass Car extends Vehicle {\n    private $wheels = [];\n\n    public function addWheel(Wheel $wheel) {\n        $this-\u003Ewheels[] = $wheel;\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003Eklasa Vehicle ma klas\u0119 Wheel.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1646,\u0022sizeSlug\u0022:\u0022large\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-large\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/agregacja-czesciowa-uml-php-1024x576.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1646\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EAgregacja ca\u0142kowita (kompozycja)\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EKompozycja to bardziej rygorystyczna forma agregacji, gdzie cz\u0119\u015bci nie mog\u0105 istnie\u0107 niezale\u017cnie od ca\u0142o\u015bci. Przyk\u0142adem mo\u017ce by\u0107 relacja Engine w Vehicle, gdzie silnik nie istnieje bez pojazdu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass Engine {\n}\n\nclass Vehicle {\n    private $engine;\n\n    public function __construct() {\n        $this-\u003Eengine = new Engine(); \/\/ Engine jest integraln\u0105 cz\u0119\u015bci\u0105 Vehicle\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1647,\u0022sizeSlug\u0022:\u0022large\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-large\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/agregacja-uml-php-1024x576.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1647\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EJe\u017celi klasa g\u0142\u00f3wna tworzy jakiekolwiek referencje wewn\u0105trz, to zawsze b\u0119dzie to relacja agregacji ca\u0142kowitej.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EDziedziczenie\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EDziedziczenie to relacja, gdzie \u003Cstrong\u003Eklasy pochodne dziedzicz\u0105 atrybuty i metody klasy bazowej\u003C\/strong\u003E. W naszym przyk\u0142adzie, Car, Truck, i Motorbike s\u0105 pochodnymi klasy Vehicle.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass Vehicle {\n    public $fuelType;\n\n    public function __construct($fuelType) {\n        $this-\u003EfuelType = $fuelType;\n    }\n}\n\nclass Car extends Vehicle {\n}\n\nclass Truck extends Vehicle {\n}\n\nclass Motorbike extends Vehicle {\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1648,\u0022sizeSlug\u0022:\u0022large\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-large\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/DZIEDZICZENIE-uml-php-1024x576.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1648\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003ERozumienie r\u00f3\u017cnych typ\u00f3w zwi\u0105zk\u00f3w w UML umo\u017cliwia lepsze projektowanie i implementacj\u0119 system\u00f3w oprogramowania. U\u017cywaj\u0105c j\u0119zyka PHP jako przyk\u0142adu, pokazali\u015bmy, jak mo\u017cna modelowa\u0107 r\u00f3\u017cne zwi\u0105zki pomi\u0119dzy klasami, co jest kluczowe dla tworzenia skalowalnych i \u0142atwych w utrzymaniu aplikacji. W praktyce, te zwi\u0105zki pomagaj\u0105 w zrozumieniu, jak obiekty wsp\u00f3\u0142dzia\u0142aj\u0105 ze sob\u0105 w ramach wi\u0119kszego systemu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E","date_published":"2024-04-12T11:55:24+02:00","date_modified":"2024-04-12T11:56:28+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","DDD"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/czym-jest-wzorzec-projektowy-builder","url":"https:\/\/tomekkowalczyk.pl\/blog\/czym-jest-wzorzec-projektowy-builder","title":"Czym Jest Wzorzec Projektowy Builder?","summary":"W dzisiejszym \u015bwiecie programowania, gdzie aplikacje staj\u0105 si\u0119 coraz bardziej z\u0142o\u017cone, wa\u017cne jest, aby kod by\u0142 nie tylko funkcjonalny, ale i \u0142atwy do zrozumienia oraz utrzymania. W\u0142a\u015bnie tutaj z pomoc\u0105 przychodz\u0105 wzorce projektowe - sprawdzone rozwi\u0105zania projektowe, kt\u00f3re mo\u017cna wielokrotnie wykorzystywa\u0107 w r\u00f3\u017cnych kontekstach. Jednym z takich wzorc\u00f3w, kt\u00f3ry zyska\u0142 du\u017c\u0105 popularno\u015b\u0107, jest wzorzec Builder \ud83c\udfd7\ufe0f.","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW dzisiejszym \u015bwiecie programowania, gdzie aplikacje staj\u0105 si\u0119 coraz bardziej z\u0142o\u017cone, wa\u017cne jest, aby kod by\u0142 nie tylko funkcjonalny, ale i \u0142atwy do zrozumienia oraz utrzymania. W\u0142a\u015bnie tutaj z pomoc\u0105 przychodz\u0105 wzorce projektowe - sprawdzone rozwi\u0105zania projektowe, kt\u00f3re mo\u017cna wielokrotnie wykorzystywa\u0107 w r\u00f3\u017cnych kontekstach. Jednym z takich wzorc\u00f3w, kt\u00f3ry zyska\u0142 du\u017c\u0105 popularno\u015b\u0107, jest wzorzec Builder \ud83c\udfd7\ufe0f.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003ECzym Jest Wzorzec Builder? \ud83e\udd14\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorzec Builder, znany r\u00f3wnie\u017c jako budowniczy, to \u003Cstrong\u003Ekreacyjny wzorzec projektowy\u003C\/strong\u003E, kt\u00f3ry pozwala na \u003Cstrong\u003Etworzenie z\u0142o\u017conych obiekt\u00f3w krok po kroku\u003C\/strong\u003E. Jest to szczeg\u00f3lnie przydatne, gdy obiekt musi by\u0107 skonfigurowany za pomoc\u0105 wielu opcjonalnych parametr\u00f3w lub gdy proces tworzenia obiektu jest niezwykle skomplikowany.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EJak Dzia\u0142a Builder? \ud83c\udfd7\ufe0f\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EProces tworzenia obiektu za pomoc\u0105 wzorca Builder mo\u017cna podzieli\u0107 na kilka etap\u00f3w:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:list {\u0022ordered\u0022:true} --\u003E\n\u003Col\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EBuilder\u003C\/strong\u003E: Interfejs Builder okre\u015bla metody niezb\u0119dne do tworzenia r\u00f3\u017cnych cz\u0119\u015bci obiektu.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EConcrete Builder\u003C\/strong\u003E: Klasy konkretnych budowniczych implementuj\u0105 interfejs Builder i okre\u015blaj\u0105 konkretn\u0105 reprezentacj\u0119 obiektu, konstruuj\u0105c i \u0142\u0105cz\u0105c jego cz\u0119\u015bci.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EProduct\u003C\/strong\u003E: Obiekt, kt\u00f3ry ma by\u0107 zbudowany. Wszystkie cz\u0119\u015bci obiektu s\u0105 sk\u0142adane przez obiekt Concrete Builder.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EDirector\u003C\/strong\u003E: Opcjonalnie, klasa dyrektora mo\u017ce definiowa\u0107 kolejno\u015b\u0107 wywo\u0142ywania metod budowania, aby stworzy\u0107 okre\u015blone konfiguracje produktu.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ol\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EPrzyk\u0142ady Zastosowa\u0144 Builder \ud83d\udcda\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cbr\u003EWzorzec Builder znajduje zastosowanie w wielu scenariuszach, na przyk\u0142ad: Budowanie z\u0142o\u017conych dokument\u00f3w (np. dokument\u00f3w tekstowych, plik\u00f3w XML).\u003Cbr\u003EKonfiguracja z\u0142o\u017conych drzew decyzyjnych lub komponent\u00f3w GUI.\u003Cbr\u003EZarz\u0105dzanie konfiguracj\u0105 skomplikowanych obiekt\u00f3w.\u003Cbr\u003E\u003Cbr\u003EZacznijmy od definicji klasy bazowej Vehicle i kilku pochodnych klas:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Eclass Vehicle {\n    public $type;\n    public $wheels;\n    public $color;\n\n    public function __construct($type) {\n        $this-\u003Etype = $type;\n    }\n\n    public function setWheels($wheels) {\n        $this-\u003Ewheels = $wheels;\n    }\n\n    public function setColor($color) {\n        $this-\u003Ecolor = $color;\n    }\n}\n\nclass Car extends Vehicle {\n    public function __construct() {\n        parent::__construct(\u0027Car\u0027);\n    }\n}\n\nclass Motorbike extends Vehicle {\n    public function __construct() {\n        parent::__construct(\u0027Motorbike\u0027);\n    }\n}\n\nclass Truck extends Vehicle {\n    public function __construct() {\n        parent::__construct(\u0027Truck\u0027);\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003ENast\u0119pnie, zdefiniujmy interfejs VehicleBuilder, kt\u00f3ry okre\u015bli metody niezb\u0119dne do zbudowania obiektu Vehicle, oraz konkretn\u0105 implementacj\u0119 dla ka\u017cdego typu pojazdu:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Einterface VehicleBuilder {\n    public function reset();\n    public function setWheels($wheels);\n    public function setColor($color);\n    public function getResult();\n}\n\nclass CarBuilder implements VehicleBuilder {\n    private $car;\n\n    public function reset() {\n        $this-\u003Ecar = new Car();\n    }\n\n    public function setWheels($wheels) {\n        $this-\u003Ecar-\u003EsetWheels($wheels);\n    }\n\n    public function setColor($color) {\n        $this-\u003Ecar-\u003EsetColor($color);\n    }\n\n    public function getResult() {\n        return $this-\u003Ecar;\n    }\n}\n\nclass MotorbikeBuilder implements VehicleBuilder {\n    private $motorbike;\n\n    public function reset() {\n        $this-\u003Emotorbike = new Motorbike();\n    }\n\n    public function setWheels($wheels) {\n        $this-\u003Emotorbike-\u003EsetWheels($wheels);\n    }\n\n    public function setColor($color) {\n        $this-\u003Emotorbike-\u003EsetColor($color);\n    }\n\n    public function getResult() {\n        return $this-\u003Emotorbike;\n    }\n}\n\nclass TruckBuilder implements VehicleBuilder {\n    private $truck;\n\n    public function reset() {\n        $this-\u003Etruck = new Truck();\n    }\n\n    public function setWheels($wheels) {\n        $this-\u003Etruck-\u003EsetWheels($wheels);\n    }\n\n    public function setColor($color) {\n        $this-\u003Etruck-\u003EsetColor($color);\n    }\n\n    public function getResult() {\n        return $this-\u003Etruck;\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003ENa koniec, mo\u017cemy u\u017cy\u0107 tych budowniczych w naszym kliencie (np., w pliku index.php), aby stworzy\u0107 r\u00f3\u017cne rodzaje pojazd\u00f3w:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Efunction buildVehicle(VehicleBuilder $builder) {\n    $builder-\u003Ereset();\n    $builder-\u003EsetWheels(4);\n    $builder-\u003EsetColor(\u0027red\u0027);\n    return $builder-\u003EgetResult();\n}\n\n$carBuilder = new CarBuilder();\n$car = buildVehicle($carBuilder);\nprint_r($car);\n\n$motorbikeBuilder = new MotorbikeBuilder();\n$motorbike = buildVehicle($motorbikeBuilder);\nprint_r($motorbike);\n\n$truckBuilder = new TruckBuilder();\n$truck = buildVehicle($truckBuilder);\nprint_r($truck);\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW tym przyk\u0142adzie, \u003Ccode\u003EbuildVehicle\u003C\/code\u003E funkcja przyjmuje budowniczego, kt\u00f3ry jest u\u017cywany do zbudowania pojazdu z okre\u015blon\u0105 liczb\u0105 k\u00f3\u0142 i kolorem. To tylko podstawowy przyk\u0142ad, kt\u00f3ry mo\u017cna rozszerzy\u0107 o wi\u0119cej w\u0142a\u015bciwo\u015bci i z\u0142o\u017cono\u015bci, w zale\u017cno\u015bci od potrzeb.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorzec Builder to pot\u0119\u017cne narz\u0119dzie w arsenale ka\u017cdego programisty, u\u0142atwiaj\u0105ce tworzenie z\u0142o\u017conych obiekt\u00f3w. Dzi\u0119ki swojej elastyczno\u015bci i zdolno\u015bci do oddzielania procesu konstrukcji od szczeg\u00f3\u0142\u00f3w implementacji, Builder znacznie u\u0142atwia zarz\u0105dzanie kodem i czyni go bardziej czytelnym. Czy zatem jeste\u015b gotowy, aby zbudowa\u0107 sw\u00f3j kod z Builderem? \ud83c\udfd7\ufe0f\ud83d\udee0\ufe0f\u003Cbr\u003E\u003Cbr\u003E\u003Cstrong\u003EPrzypisy\u003C\/strong\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cem\u003EGamma, E., Helm, R., Johnson, R., \u0026amp; Vlissides, J. (1995). W ksi\u0105\u017cce Design Patterns: Elements of Reusable Object-Oriented Software autorzy przedstawiaj\u0105 wzorzec Builder jako spos\u00f3b na oddzielanie konstrukcji z\u0142o\u017conego obiektu od jego reprezentacji. To pozwala na tworzenie r\u00f3\u017cnych reprezentacji tego samego obiektu za pomoc\u0105 tego samego procesu konstrukcyjnego.\u003C\/em\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cem\u003EMartin, R. C. (2003). W Clean Code: A Handbook of Agile Software Craftsmanship Robert C. Martin podkre\u015bla znaczenie pisania kodu, kt\u00f3ry jest \u0142atwy do zrozumienia i utrzymania. U\u017cycie wzorca Builder mo\u017ce pom\u00f3c w osi\u0105gni\u0119ciu tych cel\u00f3w, szczeg\u00f3lnie w przypadku klas z du\u017c\u0105 liczb\u0105 parametr\u00f3w konstruktora lub kiedy tworzenie instancji klasy jest procesem wieloetapowym.\u003C\/em\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cem\u003EBloch, J. (2008). W Effective Java Joshua Bloch szczeg\u00f3\u0142owo omawia implementacj\u0119 niemutowalnych obiekt\u00f3w i wskazuje na wzorzec Builder jako jedn\u0105 z metod osi\u0105gni\u0119cia niemutowalno\u015bci. Bloch argumentuje, \u017ce niemutowalne obiekty s\u0105 prostsze w u\u017cyciu, bezpieczniejsze i mog\u0105 pom\u00f3c w unikni\u0119ciu wielu b\u0142\u0119d\u00f3w zwi\u0105zanych z r\u00f3wnoczesno\u015bci\u0105.\u003C\/em\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E","date_published":"2024-04-04T22:17:32+02:00","date_modified":"2024-04-04T22:18:27+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","Wzorce projektowe","Design"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/wzorzec-fabryka-abstrakcyjna-tworzenie-rodzin-obiektow-bez-specyfikowania-ich-konkretnych-klas","url":"https:\/\/tomekkowalczyk.pl\/blog\/wzorzec-fabryka-abstrakcyjna-tworzenie-rodzin-obiektow-bez-specyfikowania-ich-konkretnych-klas","title":"Wzorzec Fabryka Abstrakcyjna: Tworzenie Rodzin Obiekt\u00f3w bez Specyfikowania Ich Konkretnych Klas","summary":"W \u015bwiecie programowania obiektowego, wzorce projektowe pe\u0142ni\u0105 kluczow\u0105 rol\u0119 w tworzeniu elastycznego, skalowalnego i \u0142atwego do utrzymania kodu. Jednym z takich wzorc\u00f3w, kt\u00f3ry pozwala na eleganckie zarz\u0105dzanie tworzeniem rodzin powi\u0105zanych lub zale\u017cnych obiekt\u00f3w bez okre\u015blania ich konkretnych klas, jest Fabryka Abstrakcyjna","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW \u015bwiecie programowania obiektowego, wzorce projektowe pe\u0142ni\u0105 kluczow\u0105 rol\u0119 w tworzeniu \ud83d\ude80elastycznego, skalowalnego i \u0142atwego do utrzymania kodu. Jednym z takich wzorc\u00f3w, kt\u00f3ry pozwala na eleganckie zarz\u0105dzanie tworzeniem rodzin powi\u0105zanych lub zale\u017cnych obiekt\u00f3w bez okre\u015blania ich konkretnych klas, jest \ud83c\udfed Fabryka Abstrakcyjna (ang. Abstract Factory). Ten wzorzec konstrukcyjny \u003Cstrong\u003Ezapewnia interfejs do\u003C\/strong\u003E \u003Cstrong\u003Etworzenia rodzin obiekt\u00f3w\u003C\/strong\u003E, umo\u017cliwiaj\u0105c klientom korzystanie z obiekt\u00f3w r\u00f3\u017cnych rodzin \u003Cstrong\u003Ebez zwi\u0105zania ich z konkretnymi klasami\u003C\/strong\u003E.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EZobacz tak\u017ce wpis o \u003Ca href=\u0022https:\/\/tomekkowalczyk.pl\/simple-factory-prosta-fabryka\/\u0022 data-type=\u0022link\u0022 data-id=\u0022https:\/\/tomekkowalczyk.pl\/simple-factory-prosta-fabryka\/\u0022\u003Eprostej fabryce\u003C\/a\u003E. \u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZasada Dzia\u0142ania\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EFabryka Abstrakcyjna opiera si\u0119 na serii powi\u0105zanych ze sob\u0105 fabryk, z kt\u00f3rych ka\u017cda jest odpowiedzialna za tworzenie obiekt\u00f3w nale\u017c\u0105cych do okre\u015blonej rodziny. Wzorzec ten pozwala na abstrakcj\u0119 procesu instancjonowania klasy, dzi\u0119ki czemu system mo\u017ce by\u0107 niezale\u017cny od sposobu tworzenia obiekt\u00f3w i ich reprezentacji. W praktyce oznacza to, \u017ce \u003Cstrong\u003Edodanie nowej rodziny obiekt\u00f3w do aplikacji nie wymaga modyfikacji kodu klienta\u003C\/strong\u003E, co znacznie \u003Cstrong\u003Eu\u0142atwia rozbudow\u0119 i utrzymanie systemu\u003C\/strong\u003E.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EPrzyk\u0142ady Zastosowa\u0144\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorzec Fabryka Abstrakcyjna jest szczeg\u00f3lnie przydatny w sytuacjach, gdy:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\ud83d\udc49 System powinien by\u0107 konfigurowany z jedn\u0105 z wielu rodzin obiekt\u00f3w.\u003Cbr\u003E\ud83d\udc49 Rodzina powi\u0105zanych obiekt\u00f3w ma by\u0107 u\u017cywana razem.\u003Cbr\u003E\ud83d\udc49 Biblioteka lub framework ma dostarcza\u0107 obiekty do aplikacji bez eksponowania ich implementacji.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZalety\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003EIzolacja konkretnej implementacji\u003C\/strong\u003E: Klient korzysta z interfejs\u00f3w, nie wiedz\u0105c, kt\u00f3re konkretne instancje s\u0105 u\u017cywane.\u003Cbr\u003E\u2705 \u003Cstrong\u003E\u0141atwo\u015b\u0107 wymiany rodzin produkt\u00f3w\u003C\/strong\u003E: Mo\u017cliwo\u015b\u0107 zmiany rodziny produkt\u00f3w bez modyfikacji kodu klienta.\u003Cbr\u003E\u2705 \u003Cstrong\u003EPromowanie sp\u00f3jno\u015bci mi\u0119dzy produktami\u003C\/strong\u003E: U\u0142atwia tworzenie zestaw\u00f3w obiekt\u00f3w, kt\u00f3re dobrze ze sob\u0105 wsp\u00f3\u0142pracuj\u0105.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading {\u0022level\u0022:3} --\u003E\n\u003Ch3 class=\u0022wp-block-heading\u0022\u003EPrzyk\u0142ad w PHP\u003C\/h3\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EZak\u0142adaj\u0105c, \u017ce chcemy zastosowa\u0107 wzorzec Fabryka Abstrakcyjna do stworzenia systemu zarz\u0105dzania r\u00f3\u017cnymi rodzajami samochod\u00f3w, mo\u017cemy zdefiniowa\u0107 fabryk\u0119, kt\u00f3ra b\u0119dzie produkowa\u0107 obiekty reprezentuj\u0105ce samochody r\u00f3\u017cnych marek, ka\u017cdy z w\u0142asnymi cechami. Poni\u017cej znajduje si\u0119 uproszczony przyk\u0142ad, jak to mo\u017ce wygl\u0105da\u0107 w PHP.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022align\u0022:\u0022center\u0022,\u0022id\u0022:1585,\u0022sizeSlug\u0022:\u0022full\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image aligncenter size-full\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/03\/image.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1585\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003EInterfejsy i Klasy Produkt\u00f3w\u003Cbr\u003E\u003C\/strong\u003EDefiniujemy podstawowe interfejsy dla naszych produkt\u00f3w, czyli r\u00f3\u017cnych typ\u00f3w samochod\u00f3w, oraz implementacje tych interfejs\u00f3w dla konkretnych marek samochod\u00f3w.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Einterface Car {\n    public function getType(): string;\n    public function getBrand(): string;\n}\n\nclass Sedan implements Car {\n    private $brand;\n\n    public function __construct(string $brand) {\n        $this-\u003Ebrand = $brand;\n    }\n\n    public function getType(): string {\n        return \u0027Sedan\u0027;\n    }\n\n    public function getBrand(): string {\n        return $this-\u003Ebrand;\n    }\n}\n\nclass SUV implements Car {\n    private $brand;\n\n    public function __construct(string $brand) {\n        $this-\u003Ebrand = $brand;\n    }\n\n    public function getType(): string {\n        return \u0027SUV\u0027;\n    }\n\n    public function getBrand(): string {\n        return $this-\u003Ebrand;\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003EInterfejs Fabryki Abstrakcyjnej i Konkretne Fabryki\u003C\/strong\u003E\u003Cbr\u003ENast\u0119pnie definiujemy interfejs dla fabryki abstrakcyjnej i konkretne implementacje tej fabryki dla r\u00f3\u017cnych marek samochod\u00f3w.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Einterface CarFactory {\n    public function createSedan(): Car;\n    public function createSUV(): Car;\n}\n\nclass ToyotaFactory implements CarFactory {\n    public function createSedan(): Car {\n        return new Sedan(\u0022Toyota\u0022);\n    }\n\n    public function createSUV(): Car {\n        return new SUV(\u0022Toyota\u0022);\n    }\n}\n\nclass FordFactory implements CarFactory {\n    public function createSedan(): Car {\n        return new Sedan(\u0022Ford\u0022);\n    }\n\n    public function createSUV(): Car {\n        return new SUV(\u0022Ford\u0022);\n    }\n}\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003EKod Klienta\u003Cbr\u003E\u003C\/strong\u003EKod klienta u\u017cywa fabryki abstrakcyjnej do tworzenia obiekt\u00f3w, nie wiedz\u0105c, z jakimi konkretnymi implementacjami ma do czynienia.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Efunction clientCode(CarFactory $factory) {\n    $sedan = $factory-\u003EcreateSedan();\n    echo \u0022Stworzono \u0022 . $sedan-\u003EgetType() . \u0022 marki \u0022 . $sedan-\u003EgetBrand() . \u0022.\\n\u0022;\n\n    $suv = $factory-\u003EcreateSUV();\n    echo \u0022Stworzono \u0022 . $suv-\u003EgetType() . \u0022 marki \u0022 . $suv-\u003EgetBrand() . \u0022.\\n\u0022;\n}\n\n\/\/ Tworzenie samochod\u00f3w marki Toyota\nclientCode(new ToyotaFactory());\n\n\/\/ Tworzenie samochod\u00f3w marki Ford\nclientCode(new FordFactory());\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW tym przyk\u0142adzie, CarFactory jest interfejsem fabryki abstrakcyjnej, kt\u00f3ry deklaruje metody do tworzenia r\u00f3\u017cnych typ\u00f3w samochod\u00f3w (Sedan i SUV). ToyotaFactory i FordFactory s\u0105 konkretnymi fabrykami, kt\u00f3re implementuj\u0105 ten interfejs, tworz\u0105c samochody swoich marek. Kod klienta wykorzystuje te fabryki do stworzenia samochod\u00f3w, nie b\u0119d\u0105c bezpo\u015brednio zale\u017cnym od konkretnych klas samochod\u00f3w. Dzi\u0119ki temu mo\u017cemy \u0142atwo doda\u0107 nowe fabryki dla innych marek samochod\u00f3w bez zmiany kodu klienta.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E","date_published":"2024-04-02T12:01:00+02:00","date_modified":"2024-04-02T15:35:24+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","Wzorce projektowe"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/simple-factory-prosta-fabryka","url":"https:\/\/tomekkowalczyk.pl\/blog\/simple-factory-prosta-fabryka","title":"Simple Factory - Prosta fabryka","summary":"Wzorzec projektowy Prosta Fabryka, znany r\u00f3wnie\u017c jako Simple Factory, to koncepcja u\u017cywana w programowaniu obiektowym, kt\u00f3ra polega na tworzeniu instancji obiekt\u00f3w bez konieczno\u015bci okre\u015blania dok\u0142adnych klas obiekt\u00f3w.","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorzec projektowy \ud83c\udff0 Prosta Fabryka, znany r\u00f3wnie\u017c jako \u003Cstrong\u003ESimple Factory\u003C\/strong\u003E, to koncepcja u\u017cywana w programowaniu obiektowym, kt\u00f3ra polega na \u003Cstrong\u003Etworzeniu instancji obiekt\u00f3w bez konieczno\u015bci okre\u015blania dok\u0142adnych klas obiekt\u00f3w\u003C\/strong\u003E. Prosta fabryka abstrahuje proces tworzenia instancji, co pozwala na wi\u0119ksz\u0105 elastyczno\u015b\u0107 i \u0142atwiejsze zarz\u0105dzanie tworzeniem obiekt\u00f3w, szczeg\u00f3lnie gdy istnieje wiele obiekt\u00f3w o podobnych interfejsach, ale r\u00f3\u017cnych implementacjach. \u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003ENale\u017cy do grupy wzorc\u00f3w konstrukcyjnych. Niekt\u00f3rzy mog\u0105 si\u0119 przyczepi\u0107, \u017ce prosta fabryka nie jest pe\u0142noprawnym wzorcem projektowym, a w wielu materia\u0142ach o tej tematyce go nie znajdziecie.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZasada Dzia\u0142ania \ud83d\ude80\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorzec Prosta Fabryka skupia si\u0119 na jednej klasie, kt\u00f3r\u0105 nazywamy \u0022fabryk\u0105\u0022. Ta klasa zawiera metod\u0119, kt\u00f3ra decyduje, jaka instancja klasy powinna zosta\u0107 stworzona na podstawie podanych argument\u00f3w. Wyb\u00f3r konkretnego typu obiektu jest ukryty wewn\u0105trz metody fabrycznej, co oznacza, \u017ce u\u017cytkownik klasy fabrycznej nie musi zna\u0107 wszystkich dost\u0119pnych typ\u00f3w obiekt\u00f3w ani sposobu ich tworzenia.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EZalety U\u017cywania Prostej Fabryki\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003ESeparacja odpowiedzialno\u015bci:\u003C\/strong\u003E Fabryka oddziela kod odpowiedzialny za tworzenie obiekt\u00f3w od kodu, kt\u00f3ry z tych obiekt\u00f3w korzysta.\u003Cbr\u003E\u2705 \u003Cstrong\u003EElastyczno\u015b\u0107:\u003C\/strong\u003E \u0141atwo mo\u017cna doda\u0107 nowe klasy do systemu, kt\u00f3re mog\u0105 by\u0107 tworzone przez fabryk\u0119, nie modyfikuj\u0105c istniej\u0105cego kodu korzystaj\u0105cego z fabryki.\u003Cbr\u003E\u2705 \u003Cstrong\u003EUkrycie szczeg\u00f3\u0142\u00f3w tworzenia:\u003C\/strong\u003E U\u017cytkownicy fabryki nie musz\u0105 zna\u0107 szczeg\u00f3\u0142\u00f3w dotycz\u0105cych tworzenia poszczeg\u00f3lnych obiekt\u00f3w.\u003Cbr\u003E\u2705 przestrzega \u003Cstrong\u003Eregu\u0142\u0119 pojedynczej odpowiedzialno\u015bci\u003C\/strong\u003E\u003Cbr\u003E\u2705 przestrzega \u003Cstrong\u003Eregu\u0142\u0119 odwr\u00f3cenia zale\u017cno\u015bci\u003C\/strong\u003E\u003Cbr\u003E\u2705 przestrzega\u003Cstrong\u003E regu\u0142\u0119 DRY\u003C\/strong\u003E i gwarantuje reu\u017cywalno\u015b\u0107\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWady\u003Cbr\u003E\u274c \u0142amie regu\u0142\u0119 otwarte-zamkni\u0119te\u003Cbr\u003E\u274c u\u017cyta na za\u015b mo\u017ce okaza\u0107 si\u0119 niepotrzebna (YAGNI)\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EPoni\u017cej przedstawiam prosty przyk\u0142ad implementacji wzorca Prosta Fabryka w PHP, kt\u00f3ry ilustruje tworzenie r\u00f3\u017cnych typ\u00f3w pojazd\u00f3w:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003Einterface Vehicle {\n    public function getType(): string;\n}\n\nclass Car implements Vehicle {\n    public function getType(): string {\n        return \u0027Car\u0027;\n    }\n}\n\nclass Truck implements Vehicle {\n    public function getType(): string {\n        return \u0027Truck\u0027;\n    }\n}\n\nclass VehicleFactory {\n    public static function createVehicle(string $type): Vehicle {\n        return match($type) {\n            \u0027car\u0027 =\u003E new Car(),\n            \u0027truck\u0027 =\u003E new Truck(),\n            default =\u003E throw new Exception(\u0022Vehicle type not recognized\u0022),\n        };\n    }\n}\n\n\n$car = VehicleFactory::createVehicle(\u0027car\u0027);\necho $car-\u003EgetType(); \n\n$truck = VehicleFactory::createVehicle(\u0027truck\u0027);\necho $truck-\u003EgetType(); \u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW tym przyk\u0142adzie, \u003Ccode\u003EVehicleFactory\u003C\/code\u003E jest prost\u0105 fabryk\u0105, kt\u00f3ra tworzy i zwraca instancje typ\u00f3w pojazd\u00f3w na podstawie przekazanego argumentu. Interfejs \u003Ccode\u003EVehicle\u003C\/code\u003E gwarantuje, \u017ce wszystkie tworzone pojazdy b\u0119d\u0105 mia\u0142y metod\u0119 \u003Ccode\u003EgetType\u003C\/code\u003E, ale ka\u017cda konkretna klasa (jak Car czy Truck) mo\u017ce mie\u0107 r\u00f3\u017cn\u0105 implementacj\u0119 tej metody.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorzec Prosta Fabryka jest u\u017cytecznym \ud83d\udd28 narz\u0119dziem w arsenale programisty, oferuj\u0105cym czytelne i elastyczne podej\u015bcie do tworzenia obiekt\u00f3w. U\u0142atwia rozbudow\u0119 aplikacji, jednocze\u015bnie zachowuj\u0105c porz\u0105dek i przejrzysto\u015b\u0107 w kodzie, co jest szczeg\u00f3lnie wa\u017cne w wi\u0119kszych systemach i aplikacjach.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E","date_published":"2024-03-24T21:56:15+01:00","date_modified":"2024-04-02T15:47:16+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","Wzorce projektowe"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/czym-sa-wzorce-konstrukcyjne","url":"https:\/\/tomekkowalczyk.pl\/blog\/czym-sa-wzorce-konstrukcyjne","title":"Czym s\u0105 wzorce konstrukcyjne?","summary":"Wzorce konstrukcyjne (ang. creational design patterns) to jedna z kategorii wzorc\u00f3w projektowych, kt\u00f3re koncentruj\u0105 si\u0119 na mechanizmach tworzenia obiekt\u00f3w, zwi\u0119kszaj\u0105c elastyczno\u015b\u0107 i ponown\u0105 u\u017cyteczno\u015b\u0107 istniej\u0105cego kodu.","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorce konstrukcyjne (ang. \u003Cem\u003Ecreational design patterns\u003C\/em\u003E) to jedna z kategorii wzorc\u00f3w projektowych, kt\u00f3re koncentruj\u0105 si\u0119 na mechanizmach \u003Cstrong\u003Etworzenia obiekt\u00f3w\u003C\/strong\u003E, \u003Cstrong\u003Ezwi\u0119kszaj\u0105c elastyczno\u015b\u0107\u003C\/strong\u003E i \u003Cstrong\u003Eponown\u0105 u\u017cyteczno\u015b\u0107 istniej\u0105cego kodu\u003C\/strong\u003E. G\u0142\u00f3wnym celem wzorc\u00f3w konstrukcyjnych jest \u003Cstrong\u003Eu\u0142atwienie procesu tworzenia obiekt\u00f3w\u003C\/strong\u003E, szczeg\u00f3lnie w sytuacjach, gdzie bezpo\u015brednie instancjonowanie klas (u\u017cycie operatora \u003Ccode\u003Enew\u003C\/code\u003E) mo\u017ce prowadzi\u0107 do problem\u00f3w zwi\u0105zanych z elastyczno\u015bci\u0105 i zale\u017cno\u015bciami w aplikacji.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EOto kilka kluczowych wzorc\u00f3w konstrukcyjnych, ka\u017cdy z nich s\u0142u\u017cy do rozwi\u0105zania okre\u015blonych problem\u00f3w projektowych:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:list {\u0022ordered\u0022:true} --\u003E\n\u003Col\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003ESingleton\u003C\/strong\u003E: Zapewnia, \u017ce klasa ma tylko jedn\u0105 instancj\u0119 i zapewnia globalny punkt dost\u0119pu do tej instancji. Jest cz\u0119sto u\u017cywany do zarz\u0105dzania zasobami wsp\u00f3\u0142dzielonymi, takimi jak po\u0142\u0105czenie z baz\u0105 danych.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EFabryka abstrakcyjna (Abstract Factory)\u003C\/strong\u003E: Tworzy interfejs do tworzenia rodzin powi\u0105zanych lub zale\u017cnych od siebie obiekt\u00f3w bez okre\u015blania ich konkretnych klas. Umo\u017cliwia klientowi korzystanie z r\u00f3\u017cnych rodzin produkt\u00f3w bez konkretyzacji klas na etapie kompilacji.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EBudowniczy (Builder)\u003C\/strong\u003E: Oddziela konstrukcj\u0119 z\u0142o\u017conego obiektu od jego reprezentacji, tak \u017ce ten sam proces konstrukcyjny mo\u017ce tworzy\u0107 r\u00f3\u017cne reprezentacje. Jest przydatny, kiedy obiekt musi by\u0107 bardzo z\u0142o\u017cony, sk\u0142ada\u0107 si\u0119 z wielu podobiekt\u00f3w, lub gdy proces jego tworzenia wymaga wielu krok\u00f3w.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EPrototyp (Prototype)\u003C\/strong\u003E: Pozwala kopiowa\u0107 istniej\u0105ce obiekty bez konieczno\u015bci zale\u017cno\u015bci od ich klas. U\u017cywa si\u0119 go, gdy tworzenie instancji jest dro\u017csze ni\u017c klonowanie.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EProsta fabryka (Simple Factory)\u003C\/strong\u003E: Nie jest formalnie uznawana za wzorzec projektowy przez Gang of Four, ale cz\u0119sto jest u\u017cywana do ukrycia logiki tworzenia obiekt\u00f3w, umo\u017cliwiaj\u0105c klasie wytworzenie instancji r\u00f3\u017cnych klas na podstawie podanych informacji.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ol\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorce konstrukcyjne s\u0105 niezwykle przydatne w wielu sytuacjach, poniewa\u017c pozwalaj\u0105 na:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:list --\u003E\n\u003Cul\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EUkrycie szczeg\u00f3\u0142\u00f3w tworzenia obiekt\u00f3w\u003C\/strong\u003E: U\u017cytkownik nie musi wiedzie\u0107, jakie klasy dok\u0142adnie s\u0105 potrzebne do stworzenia kompleksowego obiektu.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EZwi\u0119kszenie elastyczno\u015bci\u003C\/strong\u003E: Mo\u017cna \u0142atwo zmieni\u0107 klas\u0119 instancjonowanych obiekt\u00f3w, co pozwala na lepsz\u0105 kontrol\u0119 nad tym, jak s\u0105 one tworzone, skonfigurowane i przedstawiane.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EUproszczenie kodu\u003C\/strong\u003E: Klient nie musi tworzy\u0107 obiekt\u00f3w bezpo\u015brednio, co sprawia, \u017ce kod staje si\u0119 bardziej zwi\u0119z\u0142y i \u0142atwiejszy do zarz\u0105dzania.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ul\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EImplementuj\u0105c wzorce konstrukcyjne, programi\u015bci mog\u0105 zapewni\u0107 wi\u0119ksz\u0105 skalowalno\u015b\u0107, elastyczno\u015b\u0107 i ponown\u0105 u\u017cyteczno\u015b\u0107 dla swojego kodu, co jest szczeg\u00f3lnie wa\u017cne w rozbudowanych i z\u0142o\u017conych systemach programistycznych.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EWp\u0142yw na Jako\u015b\u0107 Oprogramowania\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorce konstrukcyjne maj\u0105 znacz\u0105cy wp\u0142yw na jako\u015b\u0107 oprogramowania, zapewniaj\u0105c:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:list --\u003E\n\u003Cul\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003E\u0141atwo\u015b\u0107 utrzymania i rozszerzania\u003C\/strong\u003E: Dzi\u0119ki abstrakcji procesu tworzenia instancji, zmiany w sposobie tworzenia obiekt\u00f3w s\u0105 izolowane od reszty kodu, co u\u0142atwia adaptacj\u0119 i rozszerzanie aplikacji.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EModularno\u015b\u0107\u003C\/strong\u003E: Poniewa\u017c wzorce te cz\u0119sto promuj\u0105 dekompozycj\u0119, kod staje si\u0119 bardziej modularny, co u\u0142atwia zrozumienie, testowanie i utrzymanie.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003ENiezale\u017cno\u015b\u0107 i zamienno\u015b\u0107 komponent\u00f3w\u003C\/strong\u003E: Mo\u017cliwo\u015b\u0107 wymiany lub modyfikacji konkretnej implementacji bez wp\u0142ywu na klienta (kod, kt\u00f3ry u\u017cywa obiektu) zwi\u0119ksza elastyczno\u015b\u0107 aplikacji.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ul\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003EStosowanie w Praktyce\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWzorce konstrukcyjne znajduj\u0105 zastosowanie w wielu scenariuszach programistycznych, np.:\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:list --\u003E\n\u003Cul\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003ESingleton\u003C\/strong\u003E mo\u017ce by\u0107 u\u017cywany do zarz\u0105dzania po\u0142\u0105czeniami z baz\u0105 danych, zapewniaj\u0105c globalny dost\u0119p i unikaj\u0105c jednocze\u015bnie kosztownego i niepotrzebnego tworzenia wielu instancji.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EFabryka abstrakcyjna\u003C\/strong\u003E jest idealna w sytuacjach, gdzie system powinien by\u0107 niezale\u017cny od sposobu, w jaki tworzone s\u0105 jego produkty, oraz gdy system ma by\u0107 konfigurowany z jedn\u0105 z wielu rodzin produkt\u00f3w.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EBudowniczy\u003C\/strong\u003E jest przydatny, gdy konstruowany obiekt musi by\u0107 bardzo z\u0142o\u017cony, z wieloma sk\u0142adnikami i du\u017c\u0105 ilo\u015bci\u0105 opcji konfiguracyjnych, szczeg\u00f3lnie gdy wiele z nich ma warto\u015bci domy\u015blne.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EPrototyp\u003C\/strong\u003E jest u\u017cyteczny, gdy tworzenie kopii obiektu jest ta\u0144sze ni\u017c tworzenie nowego od zera, lub gdy stan obiektu sk\u0142ada si\u0119 z danych nieznanych w momencie kompilacji.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Cstrong\u003EProsta fabryka\u003C\/strong\u003E mo\u017ce by\u0107 stosowana do centralizowania logiki tworzenia obiekt\u00f3w, co u\u0142atwia ich zarz\u0105dzanie, szczeg\u00f3lnie gdy obiekty te musz\u0105 by\u0107 tworzone dynamicznie w zale\u017cno\u015bci od okre\u015blonych warunk\u00f3w.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ul\u003E\n\u003C!-- \/wp:list --\u003E","date_published":"2024-03-22T16:50:31+01:00","date_modified":"2024-03-24T21:11:12+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["Wzorce projektowe"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/zasada-projektowa-kompozycja-ponad-dziedziczenie","url":"https:\/\/tomekkowalczyk.pl\/blog\/zasada-projektowa-kompozycja-ponad-dziedziczenie","title":"Zasada projektowa Kompozycja ponad Dziedziczenie","summary":"Dlaczego warto rozwa\u017cy\u0107 \u0022kompozycj\u0119 ponad dziedziczenie\u0022 w Twoim projekcie? Oto kluczowe spojrzenie na t\u0119 metodologi\u0119, zach\u0119caj\u0105c do przemy\u015ble\u0144 nad rzeczywist\u0105 potrzeb\u0105 dziedziczenia w strukturze Twojego kodu. Mo\u017ce nadszed\u0142 czas, by zastanowi\u0107 si\u0119 nad ograniczeniem dziedziczenia na rzecz stosowania kompozycji?","content_html":"\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EDlaczego warto rozwa\u017cy\u0107 \u0022kompozycj\u0119 ponad dziedziczenie\u0022 w Twoim projekcie? Mo\u017ce nadszed\u0142 czas, by zastanowi\u0107 si\u0119 nad ograniczeniem dziedziczenia na rzecz stosowania kompozycji? Czy tak naprawd\u0119 jest \u003Cem\u003Ecomposition over inheritance\u003C\/em\u003E w paradygmacie obiektowym?\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EZa\u0142\u00f3\u017cmy, \u017ce projektujemy aplikacj\u0119 do obs\u0142ugi konfiguracji pojazd\u00f3w \ud83d\ude97, kt\u00f3ra ma obs\u0142ugiwa\u0107 ich ro\u017cne rodzaje. Ka\u017cdy pojazd ma wiele atrybut\u00f3w, takich jak nazwa, opis, cena, kolor, waga, itp. \u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW podej\u015bciu z dziedziczeniem, mogliby\u015bmy stworzy\u0107 klas\u0119 bazow\u0105 \u201eVehicle\u201d i klasy pochodne dla ka\u017cdego rodzaju produktu, np. \ud83d\ude97\u201eCar\u201d, \ud83d\udefa\u201eTruck\u201d, \ud83d\udef5\u201eMotorbike\u201d, itp. Ka\u017cda z tych klas pochodnych dziedziczy\u0142aby atrybuty i metody klasy bazowej, a tak\u017ce dodawa\u0142a w\u0142asne specyficzne dla danego typu pojazdu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EJednak\u017ce, w przypadku gdy dodajemy nowe rodzaje pojazd\u00f3w, musieliby\u015bmy tworzy\u0107 nowe klasy dziedzicz\u0105ce po klasie bazowej, co mo\u017ce prowadzi\u0107 do \u003Cstrong\u003Epowstania drzewa dziedziczenia\u003C\/strong\u003E, kt\u00f3re jest trudne do utrzymania i rozwijania.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EZamiast tego, mo\u017cna zastosowa\u0107 kompozycj\u0119, tworz\u0105c klas\u0119 \u201eVehicle\u201d zawieraj\u0105c\u0105 wszystkie atrybuty wsp\u00f3lne dla wszystkich typ\u00f3w pojazd\u00f3w oraz klas\u0119 \u201eVehicleType\u201d, kt\u00f3ra zawiera atrybuty i metody specyficzne dla danego typu pojazdu. Klasa \u201eVehicle\u201d zawiera\u0142aby r\u00f3wnie\u017c referencj\u0119 do obiektu \u201eVehicleType\u201d, kt\u00f3ry definiuje szczeg\u00f3\u0142y danego typu produktu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EDzi\u0119ki takiemu podej\u015bciu, \u0142atwiej jest dodawa\u0107 nowe rodzaje pojazd\u00f3w, poniewa\u017c nie trzeba tworzy\u0107 nowych klas dziedzicz\u0105cych, a jedynie nowe obiekty klasy \u201eVehicleType\u201d. Dodatkowo, mo\u017cemy \u0142atwo zmieni\u0107 atrybuty specyficzne dla danego typu pojazdu, bez wp\u0142ywu na reszt\u0119 kodu \ud83d\ude42.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003ESpis tre\u015bci\u003C\/strong\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:list --\u003E\n\u003Cul\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Ca href=\u0022#czym-jest-dziedziczenie\u0022\u003ECzym jest dziedziczenie?\u003C\/a\u003E\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003E\u003Ca href=\u0022#czym-jest-kompozycja\u0022 data-type=\u0022internal\u0022 data-id=\u0022#czym-jest-kompozycja\u0022\u003ECzym jest kompozycja?\u003C\/a\u003E\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ul\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022 id=\u0022czym-jest-dziedziczenie\u0022\u003ECzym jest dziedziczenie?\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWielu z nas jest zaznajomionych z poj\u0119ciem \u003Cstrong\u003Edziedziczenia.\u003C\/strong\u003E\u0026nbsp;\u003Cb\u003EDziedziczenie umo\u017cliwia tworzenie kodu, kt\u00f3ry mo\u017cna ponownie wykorzysta\u0107, poprzez definiowanie klasy bazowej, z kt\u00f3rej nast\u0119pnie korzystaj\u0105 inne klasy\u003C\/b\u003E. Klasa bazowa niesie ze sob\u0105 definicje czy deklaracje (je\u015bli jest abstrakcyjna) metod oraz predefiniowane w\u0142a\u015bciwo\u015bci. Przyk\u0142adem mo\u017ce by\u0107 klasa \u003Ccode\u003ECar\u003C\/code\u003E rozszerzaj\u0105ca \u003Ccode\u003EVehicle\u003C\/code\u003E. Dziedziczenie to szczeg\u00f3lny przypadek \u003Cstrong\u003Eagregacji\u003C\/strong\u003E. Jeden obiekt zawiera inny obiekt. Na diagramach UML agregacj\u0119 oznacza si\u0119 pustym rombem.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:details --\u003E\n\u003Cdetails class=\u0022wp-block-details\u0022\u003E\u003Csummary\u003ECzym jest diagram UML?\u003C\/summary\u003E\u003C!-- wp:paragraph {\u0022placeholder\u0022:\u0022Wpisz \/ aby doda\u0107 ukryty blok\u0022} --\u003E\n\u003Cp\u003EDiagram klas UML jest statycznym diagramem, przedstawiaj\u0105cym struktur\u0119 aplikacji b\u0105d\u017a systemu w paradygmacie programowania obiektowego.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1625,\u0022sizeSlug\u0022:\u0022full\u0022,\u0022linkDestination\u0022:\u0022none\u0022,\u0022align\u0022:\u0022center\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image aligncenter size-full\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/image.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1625\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\u003C\/details\u003E\n\u003C!-- \/wp:details --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EDziedziczenie \u003Cstrong\u003Eumo\u017cliwia wyodr\u0119bnienie cech wsp\u00f3lnych dla kilku klas i zamkni\u0119ciu tych cech w klasie bardziej og\u00f3lnej\u003C\/strong\u003E - o wy\u017cszym poziomie abstrakcji.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EKlasy dziedzicz\u0105ce po klasie bazowej przejmuj\u0105 jej cechy. \u003Cstrong\u003EPozwala to znacznie skr\u00f3ci\u0107 kod i zorganizowa\u0107 kod od strony logicznej\u003C\/strong\u003E.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1626,\u0022sizeSlug\u0022:\u0022full\u0022,\u0022linkDestination\u0022:\u0022none\u0022,\u0022align\u0022:\u0022center\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image aligncenter size-full\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/image-1.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1626\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:list --\u003E\n\u003Cul\u003E\u003C!-- wp:list-item --\u003E\n\u003Cli\u003EPojazd: Jest to klasa bazowa, kt\u00f3ra zawiera wsp\u00f3lne cechy i metody, kt\u00f3re b\u0119d\u0105 dziedziczone przez wszystkie typy pojazd\u00f3w (takie jak marka, model, rok produkcji).\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\n\n\u003C!-- wp:list-item --\u003E\n\u003Cli\u003ESamoch\u00f3d, Motocykl, Ci\u0119\u017car\u00f3wka: S\u0105 to klasy pochodne, kt\u00f3re dziedzicz\u0105 z klasy Pojazd i mog\u0105 zawiera\u0107 dodatkowe cechy lub metody specyficzne dla danego typu pojazdu.\u003C\/li\u003E\n\u003C!-- \/wp:list-item --\u003E\u003C\/ul\u003E\n\u003C!-- \/wp:list --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003E\/\/ Klasa bazowa dla wszystkich pojazd\u00f3w\nclass Vehicle {\n    protected string $brand;\n    protected string $model;\n    protected int $productionYear;\n\n    public function __construct(\n        string $brand,\n        string $model,\n        int $productionYear\n    ) {\n        $this-\u003Ebrand = $brand;\n        $this-\u003Emodel = $model;\n        $this-\u003EproductionYear = $productionYear;\n    }\n\n    public function printInformation(): string\n    {\n        return \u0022Marka: \u0022 . $this-\u003Ebrand . \u0022, Model: \u0022 . $this-\u003Emodel . \u0022, Rok produkcji: \u0022 . $this-\u003EproductionYear;\n    }\n}\n\n\/\/ Klasa dla samochod\u00f3w\nclass Car extends Vehicle {\n    private string $bodyType;\n\n    public function __construct(\n        string $brand,\n        string $model,\n        int $productionYear,\n        string $bodyType\n    ) {\n        parent::__construct($brand, $model, $productionYear);\n        $this-\u003EbodyType = $bodyType;\n    }\n\n    public function printInformation(): string\n    {\n        return parent::printInformation() . \u0022, Typ nadwozia: \u0022 . $this-\u003EbodyType;\n    }\n}\n\n\/\/ Klasa dla motocykli\nclass Motorbike extends Vehicle {\n    private $engineCapacity;\n\n    public function __construct(\n        string $brand,\n        string $model,\n        int $productionYear,\n        string $engineCapacity\n    ) {\n        parent::__construct($brand, $model, $productionYear);\n        $this-\u003EengineCapacity = $engineCapacity;\n    }\n\n    public function printInformation(): string\n    {\n        return parent::printInformation() . \u0022, Pojemno\u015b\u0107 silnika: \u0022 . $this-\u003EengineCapacity;\n    }\n}\n\n\/\/ Klasa dla ci\u0119\u017car\u00f3wek\nclass Truck extends Vehicle {\n    private $capacity;\n\n    public function __construct(\n        string $brand,\n        string $model,\n        int $productionYear,\n        string $capacity\n    ) {\n        parent::__construct($brand, $model, $productionYear);\n        $this-\u003Ecapacity = $capacity;\n    }\n\n    public function printInformation(): string\n    {\n        return parent::printInformation() . \u0022, \u0141adowno\u015b\u0107: \u0022 . $this-\u003Ecapacity;\n    }\n}\n\n\/\/ Tworzenie instancji r\u00f3\u017cnych pojazd\u00f3w\n$samochod = new Car(\u0022Toyota\u0022, \u0022Corolla\u0022, 2021, \u0022sedan\u0022);\necho $samochod-\u003EprintInformation() . \u0022\\n\u0022;\n\n$motocykl = new Motorbike(\u0022Yamaha\u0022, \u0022R1\u0022, 2022, \u0022998cc\u0022);\necho $motocykl-\u003EprintInformation() . \u0022\\n\u0022;\n\n$ciezarowka = new Truck(\u0022Scania\u0022, \u0022R450\u0022, 2020, \u002224000kg\u0022);\necho $ciezarowka-\u003EprintInformation() . \u0022\\n\u0022;\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022 id=\u0022czym-jest-kompozycja\u0022\u003ECzym jest kompozycja?\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EKompozycja (ang. composition) definiuje relacje \u003Cstrong\u003Etypu posiadanie\u003C\/strong\u003E. Jeden obiekt posiada drugi. Komponujemy pewien byt za pomoc\u0105 danych sk\u0142adowych. \u003Cb\u003EW praktyce, kompozycja pozwala budowa\u0107 obiekty z mniejszych cz\u0119\u015bci\u003C\/b\u003E. Mo\u017cna to por\u00f3wna\u0107 do tworzenia obrazu z kolorowych kawa\u0142k\u00f3w mozaiki, gdzie ka\u017cdy element wnosi co\u015b unikatowego do ca\u0142o\u015bci. W programowaniu, kompozycja pozwala \u0142\u0105czy\u0107 klasy w nowe struktury. Na diagramach UML kompozycj\u0119 oznacza si\u0119 wype\u0142nionym rombem.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EAgregacja ca\u0142kowita (kompozycja) jest \u003Cstrong\u003Eszczeg\u00f3lnym rodzajem asocjacji\u003C\/strong\u003E. Dwie klasy w relacji agregacji ca\u0142kowitej tworz\u0105 nierozerwaln\u0105 jedno\u015b\u0107 i nie mog\u0105 istnie\u0107 bez siebie niezale\u017cnie. Maj\u0105 one tak\u017ce wsp\u00f3lny cykl \u017cycia.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:image {\u0022id\u0022:1636,\u0022sizeSlug\u0022:\u0022large\u0022,\u0022linkDestination\u0022:\u0022none\u0022} --\u003E\n\u003Cfigure class=\u0022wp-block-image size-large\u0022\u003E\u003Cimg src=\u0022https:\/\/tomekkowalczyk.pl\/wp-content\/uploads\/2024\/04\/UML-Diagram-Graph-Team-Whiteboard-in-Purple-Yellow-Green-Simple-Colourful-Style-1024x576.png\u0022 alt=\u0022\u0022 class=\u0022wp-image-1636\u0022\/\u003E\u003C\/figure\u003E\n\u003C!-- \/wp:image --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EPowy\u017cszy obrazek mo\u017cna czyta\u0107 w nast\u0119puj\u0105cy spos\u00f3b: klasa Car ma (na w\u0142asno\u015b\u0107) klas\u0119 Vehicle. Pami\u0119taj, \u017ce nie chodzi tutaj zagnie\u017cd\u017cenie klas tylko o zwi\u0105zek relacji ca\u0142kowitej, czyli odpowiedzialno\u015b\u0107 klasy g\u0142\u00f3wnej za istnienie klasy cz\u0119\u015bciowej.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:heading {\u0022level\u0022:3} --\u003E\n\u003Ch3 class=\u0022wp-block-heading\u0022\u003ENa czym polega kompozycja?\u003C\/h3\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003EKompozycja jest to wstrzykni\u0119cie przez konstruktor lub setter w\u0142asno\u015bci danej klasy.\u003C\/strong\u003E\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EW tym podej\u015bciu kompozycji, zamiast dziedziczy\u0107 klasy Samochod, Motocykl, i Ciezarowka bezpo\u015brednio z klasy Pojazd, one zawieraj\u0105 instancj\u0119 klasy Pojazd jako element sk\u0142adowy.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:syntaxhighlighter\/code {\u0022language\u0022:\u0022php\u0022} --\u003E\n\u003Cpre class=\u0022wp-block-syntaxhighlighter-code\u0022\u003E\/\/ Class defining basic properties of a vehicle\nclass Vehicle {\n    private $brand;\n    private $model;\n    private $yearOfManufacture;\n\n    public function __construct($brand, $model, $yearOfManufacture) {\n        $this-\u003Ebrand = $brand;\n        $this-\u003Emodel = $model;\n        $this-\u003EyearOfManufacture = $yearOfManufacture;\n    }\n\n    public function displayInformation() {\n        return \u0022Brand: \u0022 . $this-\u003Ebrand . \u0022, Model: \u0022 . $this-\u003Emodel . \u0022, Year of Manufacture: \u0022 . $this-\u003EyearOfManufacture;\n    }\n}\n\n\/\/ Class for specific characteristics of a car\nclass Car {\n    private $vehicle;\n    private $bodyType;\n\n    public function __construct(Vehicle $vehicle, $bodyType) {\n        $this-\u003Evehicle = $vehicle;\n        $this-\u003EbodyType = $bodyType;\n    }\n\n    public function displayInformation() {\n        return $this-\u003Evehicle-\u003EdisplayInformation() . \u0022, Body Type: \u0022 . $this-\u003EbodyType;\n    }\n}\n\n\/\/ Class for specific characteristics of a motorcycle\nclass Motorcycle {\n    private $vehicle;\n    private $engineCapacity;\n\n    public function __construct(Vehicle $vehicle, $engineCapacity) {\n        $this-\u003Evehicle = $vehicle;\n        $this-\u003EengineCapacity = $engineCapacity;\n    }\n\n    public function displayInformation() {\n        return $this-\u003Evehicle-\u003EdisplayInformation() . \u0022, Engine Capacity: \u0022 . $this-\u003EengineCapacity;\n    }\n}\n\n\/\/ Class for specific characteristics of a truck\nclass Truck {\n    private $vehicle;\n    private $loadCapacity;\n\n    public function __construct(Vehicle $vehicle, $loadCapacity) {\n        $this-\u003Evehicle = $vehicle;\n        $this-\u003EloadCapacity = $loadCapacity;\n    }\n\n    public function displayInformation() {\n        return $this-\u003Evehicle-\u003EdisplayInformation() . \u0022, Load Capacity: \u0022 . $this-\u003EloadCapacity;\n    }\n}\n\n\/\/ Creating instances of vehicle and its specific characteristics\n$vehicle1 = new Vehicle(\u0022Toyota\u0022, \u0022Corolla\u0022, 2021);\n$car = new Car($vehicle1, \u0022sedan\u0022);\necho $car-\u003EdisplayInformation() . \u0022\\n\u0022;\n\n$vehicle2 = new Vehicle(\u0022Yamaha\u0022, \u0022R1\u0022, 2022);\n$motorcycle = new Motorcycle($vehicle2, \u0022998cc\u0022);\necho $motorcycle-\u003EdisplayInformation() . \u0022\\n\u0022;\n\n$vehicle3 = new Vehicle(\u0022Scania\u0022, \u0022R450\u0022, 2020);\n$truck = new Truck($vehicle3, \u002224000kg\u0022);\necho $truck-\u003EdisplayInformation() . \u0022\\n\u0022;\u003C\/pre\u003E\n\u003C!-- \/wp:syntaxhighlighter\/code --\u003E\n\n\u003C!-- wp:heading --\u003E\n\u003Ch2 class=\u0022wp-block-heading\u0022\u003E\ud83d\ude80 Zalety kompozycji\u003C\/h2\u003E\n\u003C!-- \/wp:heading --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003EElastyczno\u015b\u0107 \ud83d\udd04\u003C\/strong\u003E: Kompozycja jest bardziej elastyczna ni\u017c dziedziczenie. Pozwala na zmian\u0119 zachowania obiekt\u00f3w w czasie rzeczywistym poprzez zmian\u0119 ich sk\u0142adowych; mo\u017cna \u0142atwiej modyfikowa\u0107 logik\u0119 bez zmiany ca\u0142ych klas.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u003Cstrong\u003E\u2705\u003C\/strong\u003E \u003Cstrong\u003EUnikanie nadmiernego sprz\u0119gania\u003C\/strong\u003E \ud83d\udd17: Dziedziczenie cz\u0119sto prowadzi do silnego sprz\u0119gania mi\u0119dzy klas\u0105 bazow\u0105 a klasami pochodnymi, co mo\u017ce by\u0107 problematyczne przy p\u00f3\u017aniejszych zmianach w kodzie. Kompozycja promuje lu\u017ane sprz\u0119ganie, co u\u0142atwia utrzymanie i skalowanie kodu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003EWi\u0119ksza przejrzysto\u015b\u0107\u003C\/strong\u003E \ud83d\udcd6: Obiekty skomponowane z innych obiekt\u00f3w s\u0105 zazwyczaj \u0142atwiejsze do zrozumienia, poniewa\u017c lepiej odzwierciedlaj\u0105 rzeczywisty \u015bwiat, wykorzystuj\u0105c bardziej naturalne relacje.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003EUnikanie problem\u00f3w z dziedziczeniem wielokrotnym \u003C\/strong\u003E\u2694\ufe0f: J\u0119zyki, kt\u00f3re nie obs\u0142uguj\u0105 wielokrotnego dziedziczenia (jak Java czy C#), mog\u0105 korzysta\u0107 z kompozycji, aby osi\u0105gn\u0105\u0107 podobn\u0105 funkcjonalno\u015b\u0107 bez komplikacji zwi\u0105zanych z dziedziczeniem z wielu klas.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003EReu\u017cywalno\u015b\u0107 kodu\u003C\/strong\u003E \u267b\ufe0f: Komponenty u\u017cywane w kompozycji mog\u0105 by\u0107 \u0142atwo ponownie u\u017cyte w r\u00f3\u017cnych kontekstach, bez konieczno\u015bci dziedziczenia z nich, co zwi\u0119ksza ponown\u0105 u\u017cyteczno\u015b\u0107 i modularno\u015b\u0107 kodu.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003EPrzestrzeganie zasady pojedynczej odpowiedzialno\u015bci \u003C\/strong\u003E\ud83c\udfaf: Kompozycja sprzyja tworzeniu klas, kt\u00f3re realizuj\u0105 pojedyncze zadania, co jest zgodne z zasad\u0105 pojedynczej odpowiedzialno\u015bci (Single Responsibility Principle) \u2013 jednym z kluczowych za\u0142o\u017ce\u0144 programowania obiektowego.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003E\u2705 \u003Cstrong\u003ELepsze zarz\u0105dzanie cyklem \u017cycia obiekt\u00f3w\u003C\/strong\u003E \ud83d\udd04: Kompozycja pozwala na lepsze zarz\u0105dzanie cyklem \u017cycia sk\u0142adowych obiekt\u00f3w, poniewa\u017c ka\u017cdy z nich mo\u017ce by\u0107 niezale\u017cnie tworzony, modyfikowany i niszczony.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E\n\n\u003C!-- wp:paragraph --\u003E\n\u003Cp\u003EWyb\u00f3r mi\u0119dzy kompozycj\u0105 a dziedziczeniem zale\u017cy od konkretnego przypadku i wymaga\u0144 projektowych. Kompozycja cz\u0119sto jest zalecana jako bardziej elastyczne i mniej problematyczne podej\u015bcie, szczeg\u00f3lnie w z\u0142o\u017conych systemach, gdzie zmiany s\u0105 cz\u0119ste i kosztowne.\u003C\/p\u003E\n\u003C!-- \/wp:paragraph --\u003E","date_published":"2024-03-21T18:14:23+01:00","date_modified":"2024-04-11T20:24:58+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI","Design"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/witaj-swiecie","url":"https:\/\/tomekkowalczyk.pl\/blog\/witaj-swiecie","title":"Witaj, na blogu programistycznym","summary":"Witajcie serdecznie na moim blogu po\u015bwi\u0119conym programowaniu w PHP, wzorcom projektowym oraz DDD (Domain-Driven Design). Je\u015bli pasjonuje Was \u015bwiat kodowania, a PHP to Wasz j\u0119zyk wyboru, to dobrze trafili\u015bcie. Tutaj, w \u015bwiecie funkcji, klas i obiekt\u00f3w, b\u0119dziemy razem eksplorowa\u0107 tajniki pisania czystego, modularnego i wydajnego kodu.","content_html":"\u003Cp\u003E\n\n\u003Cp\u003EWitajcie serdecznie na moim blogu po\u015bwi\u0119conym programowaniu w \u003Cb\u003EPHP\u003C\/b\u003E, \u003Cb\u003Ewzorcom projektowym\u003C\/b\u003E oraz \u003Cb\u003EDDD\u003C\/b\u003E (Domain-Driven Design). Je\u015bli pasjonuje Was \u015bwiat kodowania, a PHP to Wasz j\u0119zyk wyboru, to dobrze trafili\u015bcie. Tutaj, w \u015bwiecie funkcji, klas i obiekt\u00f3w, b\u0119dziemy razem eksplorowa\u0107 tajniki pisania czystego, modularnego i wydajnego kodu.\u003Cbr \/\u003E\u003Cbr \/\u003EJestem Tomek, programista z wieloletnim do\u015bwiadczeniem, kt\u00f3ry postanowi\u0142 podzieli\u0107 si\u0119 swoj\u0105 wiedz\u0105, do\u015bwiadczeniem oraz pasj\u0105 do PHP i filozofii projektowania oprogramowania. Na stronach tego bloga znajdziecie nie tylko porady i tutoriale, ale r\u00f3wnie\u017c dyskusje na temat najlepszych praktyk, wzorc\u00f3w projektowych i implementacji Domain-Driven Design w realnych projektach.\u003Cbr \/\u003E\u003Cbr \/\u003EDla mnie programowanie to nie tylko praca, ale przede wszystkim pasja i spos\u00f3b na ci\u0105g\u0142y rozw\u00f3j. Wierz\u0119, \u017ce programowanie to sztuka, a dobry kod to taki, kt\u00f3ry jest nie tylko funkcjonalny, ale i elegancki. Dlatego w\u0142a\u015bnie chc\u0119 si\u0119 z Wami podzieli\u0107 tym, co nauczy\u0142em si\u0119 przez lata, aby wsp\u00f3lnie d\u0105\u017cy\u0107 do pisania lepszego kodu.\u003Cbr \/\u003E\u003Cbr \/\u003ENie wa\u017cne, czy jeste\u015b pocz\u0105tkuj\u0105cym entuzjast\u0105 PHP, czy do\u015bwiadczonym deweloperem \u2013 mam nadziej\u0119, \u017ce znajdziesz tutaj co\u015b dla siebie. B\u0119dziemy razem przechodzi\u0107 przez przyk\u0142ady kodu, analizowa\u0107 r\u00f3\u017cne podej\u015bcia projektowe i uczy\u0107 si\u0119, jak podej\u015bcie DDD mo\u017ce przekszta\u0142ci\u0107 spos\u00f3b, w jaki my\u015blimy o tworzeniu oprogramowania.\u003Cbr \/\u003E\u003Cbr \/\u003EZach\u0119cam Was do aktywnego uczestnictwa \u2013 komentowania, zadawania pyta\u0144 i dzielenia si\u0119 w\u0142asnymi do\u015bwiadczeniami. To w\u0142a\u015bnie spo\u0142eczno\u015b\u0107 jest sercem ka\u017cdego bloga i to Wy, czytelnicy, tworzycie to miejsce wyj\u0105tkowym.\u00a0\u003Cbr \/\u003E\u003Cbr \/\u003EPozosta\u0144cie zatem z nami, odkrywajcie nowe artyku\u0142y, zg\u0142\u0119biajcie wiedz\u0119 i rozwijajcie swoje umiej\u0119tno\u015bci programistyczne razem ze mn\u0105. Do zobaczenia w komentarzach i na \u0142amach kolejnych post\u00f3w!\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n\u003Cp\u003EZ pasj\u0105 do kodu,\u003Cbr \/\u003ETomek Kowalczyk\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E","date_published":"2024-02-18T16:41:17+01:00","date_modified":"2024-03-25T22:40:44+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI","WWW","DDD"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/w-popularnych-wtyczkach-wordpress-wykryto-luki","url":"https:\/\/tomekkowalczyk.pl\/blog\/w-popularnych-wtyczkach-wordpress-wykryto-luki","title":"W popularnych wtyczkach Wordpress wykryto luki","summary":"\u0026nbsp; Serwis Wordfence wykry\u0142, \u017ce wtyczki Appointments, Flickr Gallery RegistrationMagic - Custom Registration Forms by\u0142y podatne na ataki umo\u017cliwiaj\u0105 wgranie na serwer pliku, daj\u0105cego nieograniczony\u2026","content_html":"\u0026nbsp;\n\nSerwis \u003Cstrong\u003EWordfence\u003C\/strong\u003E wykry\u0142, \u017ce wtyczki\n\n\u003Col\u003E\n    \u003Cli\u003EAppointments,\u003C\/li\u003E\n    \u003Cli\u003EFlickr Gallery\u003C\/li\u003E\n    \u003Cli\u003ERegistrationMagic - Custom Registration Forms\u003C\/li\u003E\n\u003C\/ol\u003E\n\nby\u0142y podatne na ataki umo\u017cliwiaj\u0105 wgranie na serwer pliku, daj\u0105cego nieograniczony dost\u0119p do skryptu WordPressa.\n\n\u003Cdiv class=\u0022content\u0022\u003E\n\nAtak na wtyczk\u0119 \u003Cem\u003EWP Flickr Gallery\u003C\/em\u003E polega\u0142 na mo\u017cliwo\u015bci przes\u0142ania za pomoc\u0105 metody POST \u00a0\u003Cem\u003EBackdoora\u003C\/em\u003E w odpowiednie miejsce na serwerze. Natomiast atak za pomoc\u0105 wtyczek \u003Cem\u003EAppointments\u003C\/em\u003E i\u00a0\u003Cem\u003E\u003Cspan style=\u0022text-transform: initial;\u0022\u003ERegistrationMagic - Custom Registration Forms\u00a0\u003C\/span\u003E\u003C\/em\u003Enast\u0119powa\u0142 przez wykonanie zapytania skryptu admin-ajax.php.\n\nAby si\u0119 ustrzec przed atakiem, zainstalujcie najnowsze wersje wtyczek, kt\u00f3re ju\u017c zosta\u0142y naprawione:\n\u003Cul\u003E\n    \u003Cli\u003E\u003Ca href=\u0022https:\/\/wordpress.org\/plugins\/flickr-gallery\/\u0022\u003EFlickr Gallery\u003C\/a\u003E\u00a0 (luka za\u0142atana w wersji 1.5.3)\u003C\/li\u003E\n    \u003Cli\u003E\u003Ca href=\u0022https:\/\/wordpress.org\/plugins\/appointments\/\u0022\u003EAppointments\u003C\/a\u003E\u00a0\u2013 \u00a0(luka za\u0142atana w w wersji 2.2.2)\u003C\/li\u003E\n    \u003Cli\u003E\u003Ca href=\u0022https:\/\/wordpress.org\/plugins\/custom-registration-form-builder-with-submission-manager\/\u0022\u003ERegistrationMagic \u2013 Custom Registration Forms\u003C\/a\u003E\u00a0\u2013 (luka za\u0142atana w w wersji 3.7.9.3)\u003C\/li\u003E\n\u003C\/ul\u003E\n\u0026nbsp;\n\n\u0026nbsp;\n\n\u003C\/div\u003E","date_published":"2017-10-08T11:52:01+02:00","date_modified":"2017-10-08T11:52:01+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI","WordPress"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/polska-ma-jedno-z-najwolniejszych-polaczen-internetowych-w-unii-europejskiej","url":"https:\/\/tomekkowalczyk.pl\/blog\/polska-ma-jedno-z-najwolniejszych-polaczen-internetowych-w-unii-europejskiej","title":"Polska ma jedno z najwolniejszych po\u0142\u0105cze\u0144 internetowych w Unii Europejskiej","summary":"Wed\u0142ug raportu\u00a0raportu brytyjskiej firmy Cable.co.uk.\u00a0Polska jest na 21 miejscu w UE i przedostatnia w Europie \u015arodkowo-Wschodniej.\u00a0 Najszybszy internet w Singapurze Polska znajduje si\u0119 na 36. miejscu\u2026","content_html":"\u003Ch2\u003E\u003Cstrong\u003EWed\u0142ug raportu\u00a0\u003C\/strong\u003E\u003Cstrong\u003Eraportu brytyjskiej firmy Cable.co.uk.\u00a0\u003C\/strong\u003E\u003Cstrong\u003EPolska jest na 21 miejscu w UE i przedostatnia w Europie \u015arodkowo-Wschodniej.\u00a0\u003C\/strong\u003E\u003C\/h2\u003E\n\n\u003Cdiv id=\u0022firstParagraphBlock\u0022\u003E\u003C\/div\u003E\n\n\u003Ch3\u003E\u003C\/h3\u003E\n\n\u003Ch3\u003ENajszybszy internet w Singapurze\u003C\/h3\u003E\n\nPolska znajduje si\u0119 na 36. miejscu\u00a0pod wzgl\u0119dem szybko\u015bci Internetu na ca\u0142ym \u015bwiecie. \u015arednia szybko\u015b\u0107 \u0142\u0105cza wynosi 14,88 Mb\/s.\u00a0Najszybszy Internet na \u015bwiecie znajduje si\u0119 w Singapurze, a \u015brednia szybko\u015b\u0107 \u00a0\u0142\u0105cza wynosi, a\u017c 55,13 Mb\/s. Mieszka\u0144cy Szwecji mog\u0105 pochwali\u0107 si\u0119 \u0142\u0105czem o \u015bredniej pr\u0119dko\u015bci 40,16 Mb\/s, a mieszka\u0144cy Tajwanu \u0142\u0105czem 34,4 Mb\/s. To pierwsza tr\u00f3jka najszybszych \u0142\u0105cz na \u015bwiecie.\n\n\u0026nbsp;\n\nRaport zosta\u0142 opracowany w oparciu o dane z o\u015brodk\u00f3w \u003Cstrong\u003EOpen Technology Institute\u003C\/strong\u003E, \u003Cstrong\u003EGoogle Open Source Research\u003C\/strong\u003E\u00a0i \u003Cstrong\u003EPlanetLab z Uniwersytetu Princeton\u003C\/strong\u003E.\u00a0Dane s\u0105 bardzo wiarygodnym \u017ar\u00f3d\u0142em, poniewa\u017c\u00a0zosta\u0142y zebrane podczas 63 mln test\u00f3w w a\u017c 158 krajach.\n\n\u0026nbsp;\n\n\u0026nbsp;","date_published":"2017-08-12T08:07:54+02:00","date_modified":"2017-08-12T08:07:54+02:00","authors":[{"name":"Tomasz Kowalczyk"}]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/na-44-urodziny%25f0%259f%258e%2589-rapu-google-przygotowalo-ciekawy-mikser","url":"https:\/\/tomekkowalczyk.pl\/blog\/na-44-urodziny%25f0%259f%258e%2589-rapu-google-przygotowalo-ciekawy-mikser","title":"Na 44 urodziny\ud83c\udf89\u00a0rapu Google przygotowa\u0142o ciekawy mikser","summary":"Pocz\u0105tek historii hip-hop\u0027u datuje si\u0119 na 11 sierpnia 1973 roku. Tamtego dnia na Bronxie odby\u0142a si\u0119 legendarna impreza \u0027\u0027Back to School Jam\u201d. Dzi\u015b Google Doodle upami\u0119tnia t\u0119 rocznic\u0119. Wejd\u017a na g\u0142\u00f3wn\u0105\u2026","content_html":"\u003Ch2\u003EPocz\u0105tek historii hip-hop\u0027u datuje si\u0119 na 11 sierpnia 1973 roku. Tamtego dnia na Bronxie odby\u0142a si\u0119 legendarna impreza \u0027\u0027Back to School Jam\u201d. Dzi\u015b Google Doodle upami\u0119tnia t\u0119 rocznic\u0119. Wejd\u017a na g\u0142\u00f3wn\u0105 stron\u0119 Google i sprawd\u017a sam.\u003C\/h2\u003E\n\nDzi\u0119ki narz\u0119dziu od \u003Cstrong\u003EGoogle Doodle\u003C\/strong\u003E mo\u017cesz sprawdzi\u0107, jak radzisz sobie w roli MC. Po klikni\u0119ciu w Grafitti nad wyszukiwark\u0105, zobaczysz konsol\u0119, mikser i zestaw winyli z najwi\u0119kszymi samplami w historii rapu, soulu i R\u0027n\u0027B.\nZach\u0119camy do eksperymentowania i \u017cyczymy udanej zabawy.","date_published":"2017-08-11T15:28:18+02:00","date_modified":"2017-08-11T15:28:18+02:00","authors":[{"name":"Tomasz Kowalczyk"}]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/facebook-youtube-whatsapp-i-messenger-najpopularniejsze-media-spolecznosciowe","url":"https:\/\/tomekkowalczyk.pl\/blog\/facebook-youtube-whatsapp-i-messenger-najpopularniejsze-media-spolecznosciowe","title":"Facebook, YouTube, WhatsApp i Messenger najpopularniejsze media spo\u0142eczno\u015bciowe","summary":"Wed\u0142ug bada\u0144 firm \u0022We Are Social\u0022 i \u0022Hootsuite\u0022, liczba u\u017cytkownik\u00f3w internetu wynosi a\u017c 3,81 mld. Oznacza to, \u017ce z sieci korzysta obecnie ponad po\u0142owa ca\u0142ej ludzkiej populacji. \u0026nbsp; 1. Numer jeden \u2026","content_html":"Wed\u0142ug bada\u0144 firm \u0022We Are Social\u0022 i \u0022Hootsuite\u0022, liczba u\u017cytkownik\u00f3w internetu wynosi a\u017c 3,81 mld. Oznacza to, \u017ce z sieci korzysta obecnie ponad po\u0142owa ca\u0142ej ludzkiej populacji.\n\n\u0026nbsp;\n\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003E\u003Cstrong\u003E1. Numer jeden\u003C\/strong\u003E\u003C\/p\u003E\n\nNajpopularniejsz\u0105 na \u015bwiecie platform\u0105 spo\u0142eczno\u015bciow\u0105 jest Facebook. Posiada on ponad 2 mld aktywnych u\u017cytkownik\u00f3w.\n\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003E\u003Cstrong\u003E2. Numer dwa\u003C\/strong\u003E\u003C\/p\u003E\n\nNa miejscu numer dwa znajduje si\u0119 serwis YouTube (1,5 mld).\n\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003E\u003Cstrong\u003E3. Numer trzy\u003C\/strong\u003E\u003C\/p\u003E\n\nNa miejscu numer trzy plasuje si\u0119 aplikacja WhatsApp (Aplikacja Facebooka) oraz komunikator Messenger (r\u00f3wnie\u017c stworzony przez Facebook) . Oba produkty posiadaj\u0105 po 1,2 mld u\u017cytkownik\u00f3w.\n\nZ ciekawych statystyk portali \u0022We Are Social\u0022 i \u0022Hootsuite\u0022 mo\u017cna wspomnie\u0107 i\u017c, wi\u0119kszo\u015b\u0107 jego u\u017cytkownik\u00f3w bo a\u017c 87% korzysta z serwisu Facebook na urz\u0105dzeniach mobilnych, a 59 % u\u017cywa platformy codziennie.","date_published":"2017-08-01T15:12:34+02:00","date_modified":"2017-08-01T15:12:34+02:00","authors":[{"name":"Tomasz Kowalczyk"}]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/narzedzie-do-testowania-stron-pod-katem-mobile","url":"https:\/\/tomekkowalczyk.pl\/blog\/narzedzie-do-testowania-stron-pod-katem-mobile","title":"Narz\u0119dzie do testowania stron pod k\u0105tem mobile","summary":"Hurra! W ko\u0144cu Google uruchomi\u0142 d\u0142ugo zapowiadane narz\u0119dzie do mierzenia mobilno\u015bci witryny! Podobnie jak inne narz\u0119dzia koncernu z Mountain View, jest bardzo intuicyjne,wygodne i banalne w obs\u0142udze. \u2026","content_html":"Hurra! W ko\u0144cu Google uruchomi\u0142 d\u0142ugo zapowiadane narz\u0119dzie do mierzenia mobilno\u015bci witryny!\n\nPodobnie jak inne narz\u0119dzia koncernu z Mountain View, jest bardzo intuicyjne,wygodne i banalne w obs\u0142udze. Dodatkowo, zawiera r\u00f3wnie\u017c opcje stworzenia raportu, a tak\u017ce doradza nam rozmaite zmiany, w celu usprawnienia strony pod kontem mobile.\n\nZapraszamy do testowania!\n\nNarz\u0119dzie jest dost\u0119pne pod adresem:\u00a0\u003Ca class=\u0022external\u0022 href=\u0022https:\/\/testmysite.thinkwithgoogle.com\/\u0022 target=\u0022_blank\u0022 rel=\u0022noopener\u0022\u003Ehttps:\/\/testmysite.thinkwithgoogle.com\/\u003C\/a\u003E\n\nP\u00f3ki co, dost\u0119pna jest jedynie wersja angielska.","date_published":"2017-06-24T15:41:59+02:00","date_modified":"2017-06-24T15:41:59+02:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/10-sposobow-na-przyspieszenie-strony-internetowej","url":"https:\/\/tomekkowalczyk.pl\/blog\/10-sposobow-na-przyspieszenie-strony-internetowej","title":"10 sposob\u00f3w na przyspieszenie strony internetowej","summary":"Kiedy nasz serwis internetowy ma coraz wi\u0119cej u\u017cytkownik\u00f3w, a materia\u0142\u00f3w na stron\u0119 www ci\u0105gle przybywa, mo\u017cna odczu\u0107 wra\u017cenie, \u017ce witryna \u0142aduje si\u0119 w przegl\u0105darce zdecydowanie wolniej. Tak naprawd\u0119 to\u00a0normalna sytuacja. Przegl\u0105darka internetowa musi pobra\u0107 z serwera wi\u0119cej zasob\u00f3w, a co za tym idzie, wyd\u0142u\u017ca si\u0119 czas oczekiwania na odpowied\u017a. Zobaczmy zatem jak przy\u015bpieszy\u0107 stron\u0119 internetow\u0105.","content_html":"\u003Ch2\u003EKiedy nasz serwis internetowy ma coraz wi\u0119cej u\u017cytkownik\u00f3w, a materia\u0142\u00f3w na stron\u0119 www ci\u0105gle przybywa, mo\u017cna odczu\u0107 wra\u017cenie, \u017ce witryna \u0142aduje si\u0119 w przegl\u0105darce zdecydowanie wolniej. Tak naprawd\u0119 to\u00a0normalna sytuacja. Przegl\u0105darka internetowa musi pobra\u0107 z serwera wi\u0119cej zasob\u00f3w, a co za tym idzie, wyd\u0142u\u017ca si\u0119 czas oczekiwania na odpowied\u017a. Zobaczmy zatem jak przy\u015bpieszy\u0107 stron\u0119 internetow\u0105.\u003C\/h2\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze tematyki optymalizacji stron internetowych lub znaj\u0105 w mniejszym stopniu i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z przyspieszenia dzia\u0142ania strony www.\n\nW artykule wykorzystujemy poj\u0119cie optymalizacji stron www w rozumieniu prostych witryn internetowych i blog\u00f3w skupiaj\u0105c si\u0119 g\u0142\u00f3wnie na szybko\u015bci dzia\u0142ania witryny. Optymalizacja du\u017cych portali internetowych i sklep\u00f3w to temat o wiele trudniejszy i wymaga du\u017co do\u015bwiadczenia i wiedzy programistycznej, dlatego w tym artykule pominiemy tego typu serwisy.\n\n\u003C\/div\u003E\n\u003Ch2\u003E\u003C\/h2\u003E\n\u003Ch3\u003ECzym jest optymalizacja www?\u003C\/h3\u003E\n\u003Cstrong\u003EOptymalizacja\u003C\/strong\u003E jest to proces, kt\u00f3ry polega na usprawnianiu kodu \u017ar\u00f3d\u0142owego strony, w taki spos\u00f3b by zawiera\u0142 \u003Cb\u003Epoprawn\u0105 sk\u0142adni\u0119\u003C\/b\u003E i dobrze skompresowan\u0105. Optymalizacja to tak\u017ce praca nad przejrzyst\u0105 struktur\u0105 tekst\u00f3w, link\u00f3w i s\u0142\u00f3w kluczowych na stronie, kt\u00f3ra pomaga u\u017cytkownikowi w poruszaniu si\u0119 po niej.\n\nAby skutecznie zoptymalizowa\u0107 stron\u0119 internetow\u0105, musimy pozna\u0107 miary, jakimi b\u0119dziemy si\u0119 pos\u0142ugiwa\u0107 przy dzia\u0142aniach nad minimalizacj\u0105 naszej strony internetowej.\n\u003Ch3\u003EJak zmierzy\u0107 w jakim stopniu moja strona jest zoptymalizowana?\u003C\/h3\u003E\nDo tego celu mo\u017ce pos\u0142u\u017cy\u0107 nam narz\u0119dzie od \u003Cstrong\u003EGoogle PageSpeed Insights\u003C\/strong\u003E. Aby skorzysta\u0107 z tego narz\u0119dzia dla deweloper\u00f3w, wystarczy wej\u015b\u0107 na adres \u003Ca href=\u0022https:\/\/developers.google.com\/speed\/pagespeed\/insights\/\u0022\u003Ehttps:\/\/developers.google.com\/speed\/pagespeed\/insights\/\u003C\/a\u003E i w polu \u0022Podaj URL strony internetowej\u0022 wpisa\u0107 adres strony, kt\u00f3r\u0105 chcesz zbada\u0107 pod k\u0105tem optymalizacji.\n\nNarz\u0119dzie udost\u0119pnia tak\u017ce wskaz\u00f3wki i porady jak poprawi\u0107 s\u0142absze strony witryny. Warto je przeanalizowa\u0107 i przynajmniej do wi\u0119kszo\u015bci z nich si\u0119 zastosowa\u0107. Cz\u0119\u015b\u0107 b\u0142\u0119d\u00f3w jest do\u015b\u0107 trudna do zrealizowania i nie zawsze ma sens poprawia\u0107 wszystko za wszelk\u0105 cen\u0119. Na kompromis na pewno b\u0119dziemy musieli p\u00f3j\u015b\u0107, je\u017celi korzystamy z gotowych rozwi\u0105za\u0144 do tworzenia tre\u015bci, czyli CMS np. WordPress. W pierwszej kolejno\u015bci najlepiej skupi\u0107 si\u0119 na pozycjach \u0022Nale\u017cy poprawi\u0107\u0022. Usuni\u0119cie ka\u017cdej z nich spowoduje wzrost wska\u017anika o kilka lub nawet kilkana\u015bcie punkt\u00f3w. Je\u017celi poprawimy uwag\u0119 \u0022Do ewentualnej optymalizacji\u0022 wska\u017anik wzro\u015bnie o 1 - 5 punkt\u00f3w. Je\u017celi uzyskamy wynik 85\/100 punkt\u00f3w to ju\u017c naprawd\u0119 dobry wynik.\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-warning\u0022\u003E\n\n\u003Cstrong\u003EPORADA\u003C\/strong\u003E\n\nJe\u017celi kupujesz gotowy szablon na CMS, WordPress, Joomla, Drupal, PrestaShop itd. sprawd\u017a, jaki uzyskuje wynik przyk\u0142adowy \u003Cem\u003Edemo theme\u003C\/em\u003E narz\u0119dziem Google speed Insight.\n\n\u003C\/div\u003E\nCzas wczytywania strony mo\u017cemy bada\u0107 tak\u017ce za pomoc\u0105 innych narz\u0119dzi online np. \u003Ca href=\u0022https:\/\/tools.pingdom.com\/\u0022\u003EPingdom Website Speed Test\u003C\/a\u003E\n\nMo\u017cemy tak\u017ce pos\u0142u\u017cy\u0107 si\u0119 narz\u0119dziami offline przegl\u0105darek internetowych np. Google Chrom czy Mozilla Firefox. Niech za przyk\u0142ad pos\u0142u\u017cy nam przegl\u0105darka Google Chrome.\n\u003Col\u003E\n \t\u003Cli\u003EOtwieramy stron\u0119 kt\u00f3r\u0105 chcemy przepada\u0107 w przegl\u0105darce\u003C\/li\u003E\n \t\u003Cli\u003EKlikamy prawym przyciskiem myszy i klikamy w \u0022Zbadaj\u0022 albo wciskamy sekwencj\u0119 klawiszy \u003Cem\u003ECtr + Shift + I\n\u003C\/em\u003E(W przegl\u0105darce Firefox Zbadaj element)\u003C\/li\u003E\n \t\u003Cli\u003EPrzechodzimy do zak\u0142adki \u003Cem\u003ENetwork \u003C\/em\u003E\u003C\/li\u003E\n \t\u003Cli\u003EOd\u015bwie\u017camy stron\u0119 F5\u003C\/li\u003E\n\u003C\/ol\u003E\nProgram daje nam du\u017co informacji m.in. czas wczytywania strony, \u003Cem\u003ELoad,\u003C\/em\u003E jak i struktur\u0119 DOM. Mo\u017cemy prze\u015bledzi\u0107 tak\u017ce, jak zasobo\u017cerne s\u0105 poszczeg\u00f3lne elementy sk\u0142adowych strony: media, obrazy i skrypty. Jest to bardzo ciekawe narz\u0119dzie i warte uwagi.\n\u003Ch2\u003EOptymalizacja strony internetowej\u003C\/h2\u003E\n\u003Ch3\u003E1. W\u0142\u0105czenie kompresji \u003Cem\u003EGzip\u003C\/em\u003E\u003C\/h3\u003E\nPierwszym krokiem b\u0119dzie w\u0142\u0105czenie kompresji Gzip. Dzi\u0119ki temu zabiegowi zmniejszymy ilo\u015b\u0107 danych przesy\u0142anych z\u00a0serwera do\u00a0przegl\u0105darki u\u017cytkownika. Kompresja pozwala na\u00a0zmniejszenie obj\u0119to\u015bci plik\u00f3w tekstowych nawet o 80 procent, tak wi\u0119c jest o\u00a0co walczy\u0107.\n\u003Ch4\u003E\u003Cstrong\u003ENa czym polega kompresja gzip?\u003C\/strong\u003E\u003C\/h4\u003E\nPliki strony internetowej takie jak HTML, CSS, JavaScript, XML s\u0105 kompresowane przez serwer www, a\u00a0nast\u0119pnie dekompresowane przez przegl\u0105dark\u0119 internetow\u0105. Dzi\u0119ki temu zmniejszmy transfer. Serwer www Apache dostarcza modu\u0142 \u003Cem\u003E\u003Cstrong\u003Emod_deflate\u003C\/strong\u003E\u003C\/em\u003E, za pomoc\u0105 kt\u00f3rego mo\u017cna skompresowa\u0107 pliki.\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\nZALETY\n\n- mniejszy transfer\n\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-danger\u0022\u003E\n\nWADY\n\n- wi\u0119ksze zu\u017cycia procesora serwera www\n\n\u003C\/div\u003E\n\u003Ch5\u003E\u003Cstrong\u003EW\u0142\u0105czanie modu\u0142u mod_deflate\u003C\/strong\u003E\u003C\/h5\u003E\nJe\u017celi modu\u0142 jest zainstalowany na serwerze wystarczy doda\u0107 w pliku \u003Cstrong\u003E.htacces\u003C\/strong\u003E poni\u017csze regu\u0142y:\n\u003Cpre class=\u0022lang:apache decode:true \u0022\u003E\u0026lt;IfModule mod_deflate.c\u0026gt;\nAddOutputFilterByType DEFLATE text\/plain\nAddOutputFilterByType DEFLATE text\/html\nAddOutputFilterByType DEFLATE text\/css\nAddOutputFilterByType DEFLATE text\/javascript application\/x-javascript\n\u0026lt;\/IfModule\u0026gt;\u003C\/pre\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-warning\u0022\u003EPlik .htaccess jest plikiem serwera WWW, kt\u00f3ry pozwala skonfigurowa\u0107 jego parametry. Plik dzia\u0142a w obr\u0119bie katalogu, w kt\u00f3rym zosta\u0142 umieszczony oraz w podkatalogach. Dzi\u0119ki \u003Cem\u003E.htaccess\u003C\/em\u003E mo\u017cemy nadpisa\u0107 g\u0142\u00f3wne ustawienia z pliku konfiguracyjnego serwera \u003Cem\u003Ehttpd.conf\u003C\/em\u003E.\u003C\/div\u003E\nJe\u017celi w\u0142\u0105czymy ju\u017c kompresowanie, mo\u017cemy sprawdzi\u0107, czy strona jest poprawnie kompresowana, na przyk\u0142ad tym \u003Ca href=\u0022http:\/\/www.gidnetwork.com\/tools\/gzip-test.php\u0022 target=\u0022_blank\u0022 rel=\u0022nofollow noopener noreferrer\u0022\u003Enarz\u0119dziem\u003C\/a\u003E. W polu \u003Cem\u003EWeb Page URL\u003C\/em\u003E wpisujemy adres URL naszej strony. Mo\u017cemy tak\u017ce skorzysta\u0107 ze wtyczki do przegl\u0105darki Firefox - \u003Cem\u003EFirebuga\u003C\/em\u003E lub skorzysta\u0107 ze znanego ju\u017c nam narz\u0119dzia \u003Cem\u003EZbadaj element\u003C\/em\u003E przegl\u0105darki Firefox. Interesuje nas warto\u015b\u0107 pola \u003Cstrong\u003E\u003Cem\u003EContent Encoding\u003C\/em\u003E.\u003C\/strong\u003E\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Ch3\u003E2. Minifikacja skrypt\u00f3w JavaScript i\u00a0arkuszy CSS\u003C\/h3\u003E\nMinifikacja polega na\u00a0usuni\u0119ciu ze\u00a0skrypt\u00f3w JS i CSS komentarzy oraz zb\u0119dnych znak\u00f3w, m.in. znak ko\u0144ca wiersza czy spacja. Dobr\u0105 praktyk\u0105 jest tak\u017ce do\u0142\u0105czenie plik\u00f3w JS i\u00a0CSS do strony HTML, dzi\u0119ki temu\u00a0 przegl\u0105darka wy\u015ble do serwera tylko jedno \u017c\u0105danie zamiast kilku, co znacznie powinno skr\u00f3ci\u0107 czas potrzebny na za\u0142adowanie strony.\n\nW internecie znajdziesz wiele optymalizator\u00f3w kodu online.\n\nDo plik\u00f3w CSS:\n\u003Cul\u003E\n \t\u003Cli\u003Ehttp:\/\/www.csscompressor.com\/\u003C\/li\u003E\n \t\u003Cli\u003Ehttp:\/\/devilo.us\/\u003C\/li\u003E\n\u003C\/ul\u003E\nDo plik\u00f3w JavaScript:\n\u003Cul\u003E\n \t\u003Cli\u003Ehttp:\/\/javascriptcompressor.com\/\u003C\/li\u003E\n \t\u003Cli\u003Ehttp:\/\/jscompress.com\/\u003C\/li\u003E\n\u003C\/ul\u003E\nW przypadku systemu CMS WordPress mo\u017cesz u\u017cy\u0107 wtyczki \u003Cem\u003E\u003Cstrong\u003EAutoptimize\u003C\/strong\u003E\u003C\/em\u003E, kt\u00f3ra poradzi sobie z tym problemem za nas kompresuj\u0105c kod CSS i JS.\n\u003Ch3\u003E3. Optymalizacja obrazk\u00f3w\u003C\/h3\u003E\nObrazy to\u00a0zwykle najwi\u0119ksze pod wzgl\u0119dem rozmiar\u00f3w element\u00f3w strony internetowej. Warto zadba\u0107, aby ich rozmiar i kompresja by\u0142a optymalna. Pami\u0119taj, \u017ce www lubi .jpg, kt\u00f3re z \u0142atwo\u015bci\u0105 mo\u017cna kompresowa\u0107 bez znacznej straty jako\u015bci obrazu. Je\u017celi przygotowujesz obrazek na stron\u0119 internetow\u0105 w Photoshopie czy llustratorze to u\u017cyj funkcji \u0022Zapisz jako web\u0022. Pozwoli to znacznie zmniejszy\u0107 rozmiar pliku. Dobr\u0105 praktyk\u0105 jest tak\u017ce w przypadku rozszerze\u0144 plik\u00f3w JPG zaznacza\u0107 opcj\u0119 \u003Cstrong\u003E\u003Cem\u003Eprogressive, \u003C\/em\u003E\u003C\/strong\u003Edzi\u0119ki temu zdj\u0119cie b\u0119dzie wy\u015bwietla\u0142o si\u0119 p\u0142ynnie. Innymi s\u0142owy, zdj\u0119cie pojawi si\u0119 na pocz\u0105tku w przegl\u0105darce internetowej u\u017cytkownika z ma\u0142\u0105 ilo\u015bci\u0105 pikseli i b\u0119d\u0105 one doczytywane sukcesywnie. Unikniemy w ten spos\u00f3b efektu pojawienia si\u0119 nagle obrazka w przegl\u0105darce u\u017cytkownika. Oczywi\u015bcie pami\u0119tajmy tak\u017ce o atrybutach \u003Cem\u003Ewidth\u003C\/em\u003E i \u003Cem\u003Eheight\u003C\/em\u003E, dzi\u0119ki czemu pozb\u0119dziemy si\u0119 p\u0142ywania tekstu i obrazk\u00f3w podczas wczytywania strony.\n\nJe\u017celi korzystasz z WordPressa, wystarczy, \u017ce zainstalujesz wtyczk\u0119 \u003Ca href=\u0022http:\/\/wordpress.org\/extend\/plugins\/wp-smushit\/\u0022 target=\u0022_blank\u0022 rel=\u0022nofollow noopener noreferrer\u0022\u003EWP Smush.it\u003C\/a\u003E, kt\u00f3ra \u015bwietnie poradzi sobie z optymalizacj\u0105 obraz\u00f3w, pracuje w\u00a0tle i\u00a0nie wymaga od\u00a0nas \u017cadnych dzia\u0142a\u0144. Ka\u017cdy obrazek, kt\u00f3ry\u00a0przesy\u0142amy na serwer, jest optymalizowany przez stron\u0119 Smush.it. Ciekaw\u0105 opcj\u0105 jest te\u017c kompresja obraz\u00f3w ju\u017c istniej\u0105cych w bibliotece medi\u00f3w WordPress, dzi\u0119ki opcji \u003Cem\u003EBulk Smush.it\u003C\/em\u003E, znajduj\u0105cej si\u0119 w\u00a0menu \u003Cem\u003EMedia \u003C\/em\u003Emo\u017cemy w \u0142atwy spos\u00f3b pozby\u0107 si\u0119 zb\u0119dnych KB ze zdj\u0119\u0107.\n\u003Ch3\u003E4. Usuni\u0119cie zb\u0119dnych wtyczek\u003C\/h3\u003E\nDu\u017ca ilo\u015b\u0107 zainstalowanych wtyczek\/modu\u0142\u00f3w w systemie CMS np. WordPress, Joomla, Drupal niekoniecznie musi spowalnia\u0107 stron\u0119, ale\u00a0\u017ale napisane rozszerzenia mog\u0105 to\u00a0robi\u0107. Cz\u0119sto zdarza si\u0119, \u017ce zainstalowanie kliku lub kilkunastu wtyczek powoduje wyst\u0119powanie b\u0142\u0119d\u00f3w, dlatego dobr\u0105 praktyk\u0105 jest instalowanie tylko niezb\u0119dnych modu\u0142\u00f3w czy plugin\u00f3w. A tych nieu\u017cywanych usuni\u0119cie z systemu. Wy\u0142\u0105czona wtyczka co prawda nie obci\u0105\u017ca systemu, poniewa\u017c nie jest wczytywany jej kod, ale nawet dla samego porz\u0105dku warto to zrobi\u0107. Mo\u017cesz przeprowadzi\u0107 prosty eksperyment wy\u0142\u0105czy\u0107 wszystkie wtyczki w systemie CMS i zbada\u0107 stron\u0119 za pomoc\u0105 narz\u0119dzia \u003Cem\u003EPage Speed Insight\u003C\/em\u003E. Zobaczysz wtedy, jak wtyczki potrafi\u0105 obci\u0105\u017cy\u0107 stron\u0119 www. Wtyczki cz\u0119sto doczytuj\u0105 pliki styli CSS, czy skrypty JS potrzebne do prawid\u0142owego dzia\u0142ania. Dlatego spowalniaj\u0105 szybko\u015b\u0107 renderowania strony. Warto wspomnie\u0107, i\u017c nawet je\u017celi usuniemy wtyczk\u0119 mog\u0105 zosta\u0107 tabele, rekordy w bazie danych. Nie ka\u017cdy autor wtyczki dba o usuwanie takich danych. Warto co jaki\u015b czas przejrze\u0107 baz\u0119 danych i wyczy\u015bci\u0107 j\u0105 z niepotrzebnych danych.\n\u003Ch3\u003E5. Sprz\u0105tanie CMS\u003C\/h3\u003E\nCMS jako system do\u015b\u0107 uniwersalny posiada mn\u00f3stwo opcji, a co za tym idzie du\u017c\u0105 ilo\u015b\u0107 kodu, kt\u00f3ra musi by\u0107 przetworzona przez serwer, zanim zostanie przes\u0142any do przegl\u0105darki u\u017cytkownika. Cz\u0119sto korzysta si\u0119 te\u017c z gotowych szablon\u00f3w, kt\u00f3re zawieraj\u0105 mas\u0119 \u015bmieci w\u00a0postaci wpis\u00f3w i\u00a0stron le\u017c\u0105cych w\u00a0koszu, niepotrzebnych ju\u017c wersji wpis\u00f3w, czy nieusuni\u0119tych komentarzy. Ka\u017cde zapytanie do bazy danych musi by\u0107 przetworzone. Je\u017celi rekord\u00f3w w bazie b\u0119dzie du\u017co to na odpowied\u017a b\u0119dziemy musieli czeka\u0107 d\u0142u\u017cej. Warto co jaki\u015b czas usun\u0105\u0107 te wszystkie informacje odchudzaj\u0105c przy tym baz\u0119 danych naszego serwisu. Mo\u017cemy tak\u017ce usun\u0105\u0107 pliki typu readme.html, license.txt itd.\n\u003Ch3\u003E6. Zmniejszenie ilo\u015bci zewn\u0119trznych skrypt\u00f3w\u003C\/h3\u003E\nBardzo cz\u0119sto mo\u017cemy spotka\u0107 strony internetowe, kt\u00f3re pobieraj\u0105 skrypty pochodz\u0105ce z\u00a0zewn\u0119trznych \u017ar\u00f3de\u0142, takich jak fonty czy systemy statystyk. Ka\u017cdy skrypt wczytywany z zewn\u0105trz to\u00a0dodatkowy czas potrzebny na\u00a0za\u0142adowanie pliku. Alternatyw\u0105 jest \u015bci\u0105gniecie takiego pliku lokalnie, na serwer i podpi\u0119cie do strony. Idealnym rozwi\u0105zaniem b\u0119dzie z\u0142\u0105czenie wszystkich styl\u00f3w czy plik\u00f3w JS do jednego pliku.\n\u003Ch3\u003E7. Modyfikacja formatu adres\u00f3w URL\u003C\/h3\u003E\nSystemy CMS takie jak WordPress pozwalaj\u0105 na\u00a0ustawienie dowolnego formatu adresu URL.\n\nW WordPressie mo\u017cemy to zrobi\u0107 (\u003Cem\u003EUstawienia \u2192 Bezpo\u015brednie odno\u015bniki\u003C\/em\u003E). Niestety, nie wszystkie z\u00a0nich s\u0105 tak samo wydajne. Najlepszymi formatami link\u00f3w (bo najkr\u00f3tszymi) s\u0105 te, kt\u00f3re zawieraj\u0105 identyfikator strony, ale niestety s\u0105 one niezbyt przyjazne, je\u017celi chodzi o pozycjonowanie (SEO). Najlepszym rozwi\u0105zaniem jest link z tytu\u0142em strony.\n\u003Cp class=\u0022bs-padding-2-2\u0022 style=\u0022text-align: left;\u0022\u003E\u003Cspan style=\u0022color: #ff6600;\u0022\u003EZ\u0142y przyk\u0142ad: http:\/\/egeek.pl\/?p=690\u003C\/span\u003E\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-2-2\u0022 style=\u0022text-align: left;\u0022\u003E\u003Cspan style=\u0022color: #339966;\u0022\u003EDobry przyk\u0142ad: http:\/\/egeek.pl\/co-to-jest-certyfikat-multidomain-ssl\/\u003C\/span\u003E\u003C\/p\u003E\n\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E8. Wyb\u00f3r odpowiedniego szablonu\u003C\/h3\u003E\nWybieraj\u0105c szablon dla strony internetowej dla gotowych CMS, cz\u0119sto kierujemy si\u0119 tylko wygl\u0105dem i nie skupiamy si\u0119 na kodzie strony. Oczywi\u015bcie wygl\u0105d estetyczny strony obrazki, ikony i kolory, a tak\u017ce font dobrane w odpowiedni spos\u00f3b przyci\u0105gn\u0105 klient\u00f3w, ale taki szablon musi by\u0107 napisany zgodnie ze sztuk\u0105. Inaczej b\u0119dziemy mie\u0107 problemy z wysok\u0105 pozycj\u0105 witryny w wyszukiwarkach internetowych. Oczywi\u015bcie, je\u017celi nie mamy poj\u0119cia o kodowaniu stron to lepiej kupi\u0107 p\u0142atny szablon, b\u0119dziemy mie\u0107 wtedy wi\u0119ksz\u0105 gwarancj\u0119, i\u017c b\u0119dzie wykonany prawid\u0142owo. Przy tego typu szablonach Premium mamy r\u00f3wnie\u017c aktualizacj\u0119 i wsparcie techniczne co jest bardzo istotne.\n\nIdealnym rozwi\u0105zaniem jest stworzenie szablonu dostosowanego tylko do naszych potrzeb. Takie rozwi\u0105zanie jest zdecydowanie dro\u017csze, jednak zdecydowanie lepsze. Je\u017celi nie potrafisz stworzy\u0107 takiego szablonu, mo\u017cesz zleci\u0107 go profesjonalist\u0105. Grafik przygotuje spersonalizowan\u0105 warstw\u0119 wizualn\u0105, a Web developer zakoduje szablon. Portal Egeek poleca firm\u0119 \u003Ca href=\u0022https:\/\/adevo.pl\/strony-www\u0022\u003EAdevo - Dzia\u0142amy Kreatywnie\u003C\/a\u003E.\n\u003Ch3\u003E9. Wyb\u00f3r odpowiedniego serwera\u003C\/h3\u003E\nPrzy wyborze serwera www cz\u0119sto jedynym kryterium wyboru jest cena. Niestety co\u015b, co kosztuje tanio nie mo\u017ce by\u0107 jednocze\u015bnie bardzo dobre. Nie mo\u017cemy wtedy oczekiwa\u0107 najwy\u017cszej jako\u015bci us\u0142ug. Je\u017celi inwestujemy w stron\u0119 internetow\u0105, pozycjonujemy czy nawet reklamujemy si\u0119 za pomoc\u0105 p\u0142atnych reklam Google AdWords to musimy tak\u017ce zadba\u0107 o dobry serwer.\n\n\u003Cstrong\u003EPytanie jaki to jest dobry serwer?\u003C\/strong\u003E\nDobry serwer to szybki serwer. Kt\u00f3ry b\u0119dzie w stanie maksymalnie szybko przes\u0142a\u0107 informacj\u0119 zwrotn\u0105 do przegl\u0105darki klienta. Pomy\u015bl o \u003Ca href=\u0022https:\/\/adevo.pl\/serwer-www\u0022\u003EHostingu z dyskami SSD\u003C\/a\u003E!.\n\nNa pocz\u0105tku dla naszej strony powinien wystarczy\u0107 zwyk\u0142y, serwer wirtualny gdzie zasoby s\u0105 wsp\u00f3\u0142dzielone na kilka innych stron. Jednak gdy nasz serwis stanie ju\u017c bardziej popularny, to warto rozwa\u017cy\u0107 serwer VPS lub dedykowan\u0105 maszyn\u0119.\n\u003Ch3\u003E10. Cache\u003C\/h3\u003E\n\u003Cstrong\u003ECzym jest cache?\u003C\/strong\u003E\n\n\u003Cspan class=\u0022_Tgc\u0022\u003ECache to inaczej pami\u0119\u0107 podr\u0119czna, to mechanizm, w kt\u00f3rym cz\u0119\u015b\u0107 zasob\u00f3w zgromadzonych jest w miejscu o szybszym dost\u0119pie. Podczas generowania strony internetowej na serwerze www, zostaje zbudowana strona w postaci HTML, CSS i JS. Taki kod strony zrozumia\u0142y jest ju\u017c dla przegl\u0105darki internetowej. \u00d3wczesne strony rzadko zbudowane s\u0105 tylko i wy\u0142\u0105cznie ze wspomnianych wy\u017cej j\u0119zyk\u00f3w znacznik\u00f3w. Obecnie strony posiadaj\u0105 zaawansowane narz\u0119dzia do zmiany wygl\u0105du strony z poziomu zaplecza, praktycznie bez znajomo\u015bci \u017cadnego j\u0119zyka www. Aby takie zaawansowane systemy mog\u0142y funkcjonowa\u0107 musz\u0105 by\u0107 napisane w j\u0119zyku programowania np. PHP, Python, Ruby, JAVA, C#. Wszystkie te j\u0119zyki s\u0105 interpretowane przez serwer witryny, na kt\u00f3rym si\u0119 znajduje. W przypadku WordPress-a system napisany jest w j\u0119zyku PHP. Taka operacja te\u017c kosztuje czasowo. W cache przetrzymywana jest ju\u017c wygenerowana gotowa strona. Dzi\u0119ki temu serwer jest w stanie szybciej odpowiedzie\u0107 na zapytania, a co za tym idzie u\u017cytkownik wcze\u015bniej zobaczy gotow\u0105 stron\u0119 w swojej przegl\u0105darce internetowej. Oczywi\u015bcie cache www jest od\u015bwie\u017cany co jaki\u015b okre\u015blony interwa\u0142 czasowy.\n\u003C\/span\u003E\n\nWordPress w swoim repozytorium posiada mn\u00f3stwo wtyczek, kt\u00f3re w\u00a0kompleksowy spos\u00f3b zarz\u0105dzaj\u0105 cache\u2019owaniem stron. Mo\u017cemy poleci\u0107 wtyczk\u0119 \u003Ca href=\u0022http:\/\/wordpress.org\/extend\/plugins\/w3-total-cache\/\u0022 target=\u0022_blank\u0022 rel=\u0022nofollow noopener noreferrer\u0022\u003EW3 Total Cache\u003C\/a\u003E. Jest to naprawd\u0119 bardzo rozbudowane rozszerzenie z\u00a0ca\u0142\u0105 mas\u0105 dost\u0119pnych opcji. Najlepsze jest to, \u017ce mo\u017cemy wszystko wyklika\u0107 z poziomu ustawie\u0144 wtyczki.\n\nOpr\u00f3cz cache na serwerze mamy te\u017c cache przegl\u0105darki internetowej, kt\u00f3ra we w\u0142asnym zakresie przechowuje pewne zasoby stron. Zapewne zauwa\u017cy\u0142e\u015b, \u017ce pierwsze wej\u015bcie na stron\u0119 trwa przewa\u017cnie o wiele d\u0142u\u017cej ni\u017c kolejne. Aby okre\u015bli\u0107 cache w przegl\u0105darce, do pliku .htaccess dodaj poni\u017csze linijki kodu, kt\u00f3re okre\u015blaj\u0105 czas przechowywania dla poszczeg\u00f3lnych element\u00f3w strony.\n\u003Cpre class=\u0022toolbar:2 lang:default decode:true \u0022\u003EIfModule mod_expires.c\u0026gt;\n    ExpiresActive On\n    ExpiresDefault \u0022access plus 1 month\u0022\n    ExpiresByType text\/html \u0022access plus 1 seconds\u0022\n    ExpiresByType image\/gif \u0022access plus 30 days\u0022\n    ExpiresByType image\/jpeg \u0022access plus 30 days\u0022\n    ExpiresByType image\/png \u0022access plus 30 days\u0022\n    ExpiresByType image\/jpg \u0022access plus 30 days\u0022\n    ExpiresByType image\/svg+xml \u0022access plus 30 days\u0022\n    ExpiresByType text\/css \u0022access plus 30 days\u0022\n    ExpiresByType text\/javascript \u0022access plus 30 days\u0022\n    ExpiresByType application\/javascript \u0022access plus 30 days\u0022\n    ExpiresByType application\/x-javascript \u0022access plus 30 days\u0022\n    ExpiresByType text\/xml \u0022access plus 60 minutes\u0022\n\u0026lt;\/IfModule\u0026gt;\u003C\/pre\u003E","date_published":"2017-06-18T08:00:17+02:00","date_modified":"2024-03-25T22:32:50+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI","WWW","WordPress","SEO","Design"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/jak-zabezpieczyc-strone-wordpress","url":"https:\/\/tomekkowalczyk.pl\/blog\/jak-zabezpieczyc-strone-wordpress","title":"Jak zabezpieczy\u0107 stron\u0119 opart\u0105 o WordPress?","summary":"Je\u017celi posiadasz stron\u0119 opart\u0105 o system CMS WordPress lub tak\u0105 stron\u0119 administrujesz i chcesz j\u0105 w odpowiedni spos\u00f3b zabezpieczy\u0107- \u015bwietnie trafi\u0142e\u015b. W jaki spos\u00f3b mo\u017cna zapewni\u0107 bezpiecze\u0144stwo\u00a0stron internetowych WP? Czy szyfrowanie SSL pozwoli na obron\u0119 przed dzia\u0142alno\u015bci\u0105 haker\u00f3w? Jak zabezpieczy\u0107 www, aby nasi klienci nie obawiali si\u0119, \u017ce ich dane zostan\u0105 wykradzione? Sprawd\u017acie","content_html":"\u003Cstrong\u003EJe\u017celi posiadasz stron\u0119 opart\u0105 o system CMS WordPress lub tak\u0105 stron\u0119 administrujesz i chcesz j\u0105 w odpowiedni spos\u00f3b zabezpieczy\u0107- \u015bwietnie trafi\u0142e\u015b. W jaki spos\u00f3b mo\u017cna zapewni\u0107 bezpiecze\u0144stwo\u00a0stron internetowych WP? Czy szyfrowanie SSL pozwoli na obron\u0119 przed dzia\u0142alno\u015bci\u0105 haker\u00f3w? Jak zabezpieczy\u0107 www, aby nasi klienci nie obawiali si\u0119, \u017ce ich dane zostan\u0105 wykradzione? Sprawd\u017acie\u003C\/strong\u003E\n\n\u003Cstyle\u003E\/*! elementor - v3.19.0 - 26-02-2024 *\/\u003Cbr \/\u003E\n.elementor-widget-divider{--divider-border-style:none;--divider-border-width:1px;--divider-color:#0c0d0e;--divider-icon-size:20px;--divider-element-spacing:10px;--divider-pattern-height:24px;--divider-pattern-size:20px;--divider-pattern-url:none;--divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(--divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(--divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider--view-line_icon .elementor-divider-separator,.elementor-widget-divider--view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider--view-line_icon .elementor-divider-separator:after,.elementor-widget-divider--view-line_icon .elementor-divider-separator:before,.elementor-widget-divider--view-line_text .elementor-divider-separator:after,.elementor-widget-divider--view-line_text .elementor-divider-separator:before{display:block;content:\u0022\u0022;border-block-end:0;flex-grow:1;border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--element-align-left .elementor-divider .elementor-divider-separator\u003E.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider--element-align-right .elementor-divider .elementor-divider-separator\u003E.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider--element-align-start .elementor-divider .elementor-divider-separator\u003E.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider--element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider--element-align-end .elementor-divider .elementor-divider-separator\u003E.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider--element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider--element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider--view-line_text):not(.elementor-widget-divider--view-line_icon) .elementor-divider-separator{border-block-start:var(--divider-border-width) var(--divider-border-style) var(--divider-color)}.elementor-widget-divider--separator-type-pattern{--divider-border-style:none}.elementor-widget-divider--separator-type-pattern.elementor-widget-divider--view-line .elementor-divider-separator,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:after,.elementor-widget-divider--separator-type-pattern:not(.elementor-widget-divider--view-line) .elementor-divider-separator:before,.elementor-widget-divider--separator-type-pattern:not([class*=elementor-widget-divider--view]) .elementor-divider-separator{width:100%;min-height:var(--divider-pattern-height);-webkit-mask-size:var(--divider-pattern-size) 100%;mask-size:var(--divider-pattern-size) 100%;-webkit-mask-repeat:var(--divider-pattern-repeat);mask-repeat:var(--divider-pattern-repeat);background-color:var(--divider-color);-webkit-mask-image:var(--divider-pattern-url);mask-image:var(--divider-pattern-url)}.elementor-widget-divider--no-spacing{--divider-pattern-size:auto}.elementor-widget-divider--bg-round{--divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner\u003E.elementor-widget-divider,.e-con\u003E.elementor-widget-divider{width:var(--container-widget-width,100%);--flex-grow:var(--container-widget-flex-grow)}\u003C\/style\u003E\n\n\u003Cstrong\u003E\ud83c\udfc6 Poziom trudno\u015bci\u003C\/strong\u003E:\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze tematyki zabezpieczenia systemu CMS WordPress. Artyku\u0142 wymaga znajomo\u015bci obs\u0142ugiwania tego systemu w stopniu \u015brednio-zaawansowanym, a tak\u017ce znajomo\u015b\u0107 struktury katalog\u00f3w WP. Atutem b\u0119dzie podstawowa znajomo\u015b\u0107 j\u0119zyka PHP.\n\n\u003Cb\u003ES\u0142ownik poj\u0119\u0107\u003C\/b\u003E\n\n\u003Cb\u003ES\u0142up \u003C\/b\u003E\u2013 osoba u\u017cyta przez przest\u0119pc\u00f3w podczas dokonywania oszustwa internetowego.\n\n\u003Cb\u003EHaker\u003C\/b\u003E - jest to osoba o bardzo du\u017cych, praktycznych umiej\u0119tno\u015bciach informatycznych. Media nieprawid\u0142owo u\u017cywaj\u0105 jednak tego s\u0142owa \u201eHaker\u201d do os\u00f3b \u0142ami\u0105cych zabezpieczenia system\u00f3w komputerowych. Etyka hakera sprzeciwia si\u0119 cyberprzest\u0119pczo\u015bci. Osoby \u0142ami\u0105ca zabezpieczenia w z\u0142ej wierze to Crackerzy. Crackingiem zajmuj\u0105 si\u0119 tak\u017ce osoby bez hakerskich umiej\u0119tno\u015bci, u\u017cywaj\u0105ce gotowych program\u00f3w do \u0142amania zabezpiecze\u0144. W\u015br\u00f3d haker\u00f3w takie osoby okre\u015bla si\u0119 jako script kiddie.\n\n\u003Cb\u003ECMS\u003C\/b\u003E - system zarz\u0105dzania tre\u015bci\u0105 (ang. Content Management System) to system pozwalaj\u0105cy na \u0142atwe utworzenie i zarz\u0105dzanie serwisem internetowym oraz jego p\u00f3\u017aniejsz\u0105 aktualizacj\u0119 i rozbudow\u0105. Przyk\u0142adem takiego systemu jest WordPress (skr\u00f3t WP), Drupal, Joomla.\n\n\u003Cb\u003ECracker\u003C\/b\u003E - osoba zajmuj\u0105ca si\u0119 \u0142amaniem zabezpiecze\u0144 komputerowych w celu zaszkodzenia.\n\n\u003Cb\u003ECDN (ang. Content Delivery Network)\u003C\/b\u003E - zesp\u00f3\u0142 serwer\u00f3w, kt\u00f3ry pozwala na przyspieszenie strony www dzi\u0119ki temu, \u017ce skraca drog\u0119 pomi\u0119dzy klientem a serwerem, z kt\u00f3rego s\u0105 wczytywane dane strony internetowej.\n\u003Ch2\u003EIstnieje prze\u015bwiadczenie, \u017ce ofiarami internetowych przest\u0119pc\u00f3w s\u0105 du\u017ce organizacje, banki czy instytucje publiczne. Rzeczywi\u015bcie, przest\u0119pcy internetowi najcz\u0119\u015bciej atakuj\u0105 tego typu firmy, poniewa\u017c tam znajduj\u0105 si\u0119 dane, kt\u00f3re mog\u0105 by\u0107 interesuj\u0105ce np. pe\u0142ne dane osobowe, wra\u017cliwe informacje itd. Na pewno wszelkiego rodzaju media, ch\u0119tnie pokazuj\u0105 tego typu ataki. Raczej o w\u0142amaniu na komputer Pana Romana nikt nie napisze. Mo\u017ce w\u0142a\u015bnie st\u0105d takie prze\u015bwiadczenie.\u003C\/h2\u003E\n\u003Ch2\u003E\u0022No tak, ale przecie\u017c ja posiadam ma\u0142\u0105 firm\u0119, nie mam \u017cadnych istotnych danych, po co kto\u015b mia\u0142by mnie zaatakowa\u0107?\u0022 Jest to bardzo myl\u0105ce, cho\u0107 do\u015b\u0107 cz\u0119ste prze\u015bwiadczenie. Tendencja atak\u00f3w pokazuje, \u017ce coraz cz\u0119\u015bciej ofiarami s\u0105 ma\u0142e lokalne firmy czy nawet prywatne strony internetowe. Przest\u0119pcy cz\u0119sto wykorzystuj\u0105 mniejsze firmy, kt\u00f3re s\u0105 \u017ale zabezpieczone jako s\u0142upy. Strony korporacyjne czy bankowe o wiele trudniej zaatakowa\u0107, dzia\u0142 IT zapewnia, aby us\u0142ugi www by\u0142y ci\u0105g\u0142e, transakcje bezpieczne, a skrypty na bie\u017c\u0105co aktualizowane. Ma\u0142e firmy i osoby prywatne cz\u0119sto nie maj\u0105 odpowiedniej wiedzy, umiej\u0119tno\u015bci czy finansowania na tego typu dzia\u0142ania.\u003C\/h2\u003E\n\u003Ch3\u003E\u003Cstrong\u003EDlaczego moja strona mo\u017ce by\u0107 zaatakowana\u003C\/strong\u003E\u003C\/h3\u003E\nPowod\u00f3w mo\u017ce by\u0107 tak naprawd\u0119 wiele. Przest\u0119pcy mog\u0105 potraktowa\u0107 nasz\u0105 stron\u0119 jako \u0107wiczenie, udoskonalaj\u0105c w ten spos\u00f3b swoje umiej\u0119tno\u015bci. Innym powodem, mo\u017ce by\u0107 niegraj\u0105ca fair konkurencja. Podmiana tekstu na stronie internetowej to dobry spos\u00f3b, aby klienci przestali postrzega\u0107 firm\u0119 za wiarygodn\u0105. Jeszcze innym powodem jest wykorzystanie strony WWW jako \u003Cstrong\u003Es\u0142up\u003C\/strong\u003E do innego ataku, bardziej skomplikowanego, na przyk\u0142ad na bank. Czasami taki atak to nic osobistego, zosta\u0142e\u015b wybrany spo\u015br\u00f3d tysi\u0119cy stron, kt\u00f3re posiadaj\u0105 luki w zabezpieczeniach. Tutaj jednak raczej nie ma powod\u00f3w do dumy.\u003Cstrong\u003E\n\u003C\/strong\u003E\n\u003Ch3\u003EBezpiecze\u0144stwo stron internetowych\u003C\/h3\u003E\nBezpiecze\u0144stwo stron internetowych to bardzo trudny i skomplikowany temat. \u017beby skutecznie zabezpieczy\u0107 stron\u0119 internetow\u0105, trzeba by\u0107 dobrym programist\u0105 z wieloletnim do\u015bwiadczeniem, ale r\u00f3wnie\u017c specjalist\u0105 od zabezpiecze\u0144 IT.\n\n\u017beby co\u015b zabezpieczy\u0107, naprawi\u0107 musimy najpierw pozna\u0107 mechanizm dzia\u0142ania. Przypu\u015b\u0107my, \u017ce naprawiamy zamek od klucza. Co robimy najpierw? Musimy pozna\u0107 struktur\u0119 takiego zamka. Podobnie jest ze stronami internetowymi. Je\u017celi znasz technologie tworzenia WWW to bez problemu za\u0142atasz luki bezpiecze\u0144stwa. Najlepszym sposobem zabezpieczenia strony internetowej jest wykonanie kontrolowanego ataku na witryn\u0119. Nast\u0119pnie wykonanie audytu i wprowadzenie odpowiednich poprawek programistycznych czy administratorskich. W tym artykule zak\u0142adamy jednak, i\u017c nie masz \u015bwietnego zespo\u0142u programist\u00f3w i nie jeste\u015b ekspertem z dziedziny bezpiecze\u0144stwa IT. Wielu u\u017cytkownik\u00f3w zak\u0142ada strony wykorzystuj\u0105c popularne systemy CMS np. \u003Cstrong\u003EWordPress\u003C\/strong\u003E, Drupal czy Joomla\u003Cstrong\u003E. \u003C\/strong\u003ETakie rozwi\u0105zania maj\u0105 wiele funkcjonalno\u015bci. Bogata ilo\u015b\u0107 dodatk\u00f3w, modu\u0142\u00f3w daje nam du\u017c\u0105 elastyczno\u015b\u0107 i praktycznie nie musimy posiada\u0107 \u017cadnej wiedzy \u003Cem\u003EWebdevelopera,\u003C\/em\u003E \u017ceby zbudowa\u0107 tak\u0105 stron\u0119 czy bloga, a nawet sklep internetowy.\n\nMo\u017ce w\u0142a\u015bnie dlatego w sieci jest tak du\u017co z\u0142ych stron. Z punktu widzenia bezpiecze\u0144stwa, popularne systemy CMS takie jak WordPress, kt\u00f3ry jest tworzony przez ogromn\u0105 grup\u0119 programist\u00f3w, oferuje wsparcie oraz cz\u0119ste aktualizacje. O tym jak wa\u017cne s\u0105 takie aktualizacje mo\u017cesz dowiedzie\u0107 si\u0119 z tego artyku\u0142u: \u003Ca href=\u0022http:\/\/egeek.pl\/dlaczego-warto-aktualizowac-na-biezaco-strone-www\/\u0022\u003EDlaczego warto aktualizowa\u0107 na bie\u017c\u0105co stron\u0119 www?\u003C\/a\u003E\n\nMusisz tak\u017ce wiedzie\u0107, \u017ce w \u003Cstrong\u003Ebezpiecze\u0144stwie IT\u003C\/strong\u003E nie ma czego\u015b takiego jak 100% gwarancja bezpiecze\u0144stwa. Cz\u0119sto na forach internetowych mo\u017cna spotka\u0107 si\u0119 z prze\u015bwiadczeniem, \u017ce \u003Cstrong\u003Eaktualizacja\u003C\/strong\u003E CMS jest ju\u017c wystarczaj\u0105ca dla zapewnienia maksymalnego bezpiecze\u0144stwa WWW. Niestety tak nie jest. Ochrona strony internetowej to proces d\u0142ugofalowy. O witryn\u0119 musimy dba\u0107 w\u0142a\u015bciwie ci\u0105gle. Du\u017ce portale internetowe maj\u0105 zespo\u0142y, kt\u00f3re ci\u0105gle analizuj\u0105 dzia\u0142anie witryny tylko i wy\u0142\u0105cznie pod k\u0105tem bezpiecze\u0144stwa. Pami\u0119taj, \u017ce nie\u003Cstrong\u003E chroniona\u003C\/strong\u003E i nieaktualizowana witryna internetowa, mo\u017ce negatywnie oddzia\u0142ywa\u0107 na wizerunek firmy czy marki.\n\nGigant z Mountain View - Google znajduje codziennie ponad \u003Cstrong\u003E9 900 stron\u003C\/strong\u003E, zainfekowanych z\u0142o\u015bliwym oprogramowaniem. W oko\u0142o \u003Cstrong\u003E13 mln\u003C\/strong\u003E przypadkach zapyta\u0144 do wyszukiwarki Google ostrzega, \u017ce strona, jest aktualnie zagro\u017cona.\n\u003Ch4\u003E\u003Cstrong\u003EW jaki spos\u00f3b sprawdzi\u0107 \u017ce strona jest bezpieczna?\u003C\/strong\u003E\u003C\/h4\u003E\n\u003Col\u003E\n \t\u003Cli\u003E\n\u003Ch5\u003EProgram antywirusowy\u003C\/h5\u003E\n\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.1. Komunikat programu antywirusowego McAfee informuj\u0105cy i\u017c strona jest zainfekowana\u003C\/p\u003E\n\n\u003Ch5\u003E2. Google Search Console\u003C\/h5\u003E\nPo dodaniu strony do Google Search Console strony internetowej b\u0119dziemy otrzymywa\u0107 informacj\u0119 o wykrytych nieprawid\u0142owo\u015bciach na stronie.\n\u003Ch5\u003E3. Serwis \u003Ca href=\u0022https:\/\/sitecheck.sucuri.net\/\u0022\u003ESucuri SiteCheck\u003C\/a\u003E\u003C\/h5\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.2. Screen strony Sucuri SiteCheck\u003C\/p\u003E\n\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003EZabezpieczenie strony\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Ch4\u003E\u003Cstrong\u003E1. Renomowani dostawcy us\u0142ug hostingowych\u003C\/strong\u003E\u003C\/h4\u003E\nRozpoczynamy od znalezienia dostawcy bezpiecznej platformy hostingowej, chocia\u017c wyb\u00f3r hostingu nie jest zwi\u0105zany stricte z systemem WP, kt\u00f3rym si\u0119 zajmujemy w tym artykule. Wa\u017cne jest, aby nasz wybrany serwera cieszy\u0142 si\u0119 dobr\u0105 reputacj\u0105 i zaufaniem swoich kontrahent\u00f3w. Nie b\u0119dziemy skupia\u0107 si\u0119 w tym wypadku na cenie, lecz na jako\u015bci \u015bwiadczonych us\u0142ug hostingowych. Pami\u0119taj, \u017ce niska cena przewa\u017cnie nie idzie w parze z jako\u015bci\u0105. Popularni \u003Cem\u003Eproviderzy\u003C\/em\u003E WWW prze\u015bcigaj\u0105 si\u0119 w rabatach i niskich cenach jednak zwr\u00f3\u0107my uwag\u0119 na statystyki w\u0142ama\u0144 na strony internetowe, kt\u00f3re s\u0105 obs\u0142ugiwane przez operatora. Cz\u0119st\u0105 praktyk\u0105 stosowan\u0105 przez masowych dostawc\u00f3w (nazwa.pl, home.pl, 1and1.pl) jest u\u017cycie tych samych adres\u00f3w dla kilkuset stron internetowych. Oznacza to mniej wi\u0119cej tyle, \u017ce wystarczy by jedna strona wysy\u0142a\u0142a spam z tego adresu, a wszystkie witryny na tym adresie to odczuj\u0105. Mo\u017cesz to sprawdzi\u0107 na stronie \u003Ca href=\u0022http:\/\/www.spyonweb.com\/\u0022 target=\u0022_blank\u0022 rel=\u0022nofollow noopener noreferrer\u0022\u003Espyonweb.com\u003C\/a\u003E\u003Cstrong\u003E\n\u003C\/strong\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.3. Ilo\u015b\u0107 stron internetowych na danym hostingu - portal SpyOnWeb\u003C\/p\u003E\nNie wierz w krzykliwe reklamy, \u017ce wszystko jest bez limit\u00f3w. Nie ma us\u0142ug bez limit\u00f3w! Istotnym elementem wyboru jest r\u00f3wnie\u017c \u003Cem\u003Euptime\u003C\/em\u003E, czyli gwarancja przez us\u0142ugodawc\u0119 nieprzerwanego dzia\u0142ania i dost\u0119pu do danego hostingu. \u003Cem\u003ESLA\u003C\/em\u003E\u003Cem\u003E - Service Level Agreement\u003C\/em\u003E powinien wynosi\u0107 oko\u0142o 99,95%.\u003Cstrong\u003E\n\u003C\/strong\u003ESprawd\u017a r\u00f3wnie\u017c, gdzie firma przetrzymuje dane. Wi\u0119kszo\u015b\u0107 popularnych firm hostingowych informuje na swojej stronie, gdzie trzyma swoje dane. Niekt\u00f3re firmy korzystaj\u0105 z zewn\u0119trznych centr\u00f3w danych, tak jak w przypadku do\u015b\u0107 znanej firmy home.pl kt\u00f3ra korzysta z us\u0142ug T-Mobile. Inne firmy natomiast posiadaj\u0105 w\u0142asne centra danych np: OVH. Standard dla dobrego centrum danych to minimum Tier III w\/g standaryzacji \u003Cem\u003EUptime Institiute\u003C\/em\u003E. Ostatni aspekt, kt\u00f3ry poruszymy na temat hostingu to odpowied\u017a na pytanie, jak cz\u0119sto firma robi backup? Warto upewni\u0107 si\u0119, w jaki spos\u00f3b firma dokonuje backupu, jakiego narz\u0119dzia do tego u\u017cywa i czy sam mo\u017cesz przywraca\u0107 stron\u0119 www razem z baz\u0105 danych w razie takiej potrzeby. Je\u017celi firma nie wykonuje pe\u0142nego backupu lub robi to rzadko, warto pami\u0119ta\u0107 by robi\u0107 to samodzielnie. Miejsce przechowywania kopii strony r\u00f3wnie\u017c powinno by\u0107 bezpieczne czyli dost\u0119pne tylko dla \u015bci\u015ble okre\u015blonej grupy os\u00f3b. No i na koniec oczywista oczywisto\u015b\u0107 niech kopia nie b\u0119dzie przetrzymywana w tym samym miejscu co strona. Redakcja Egeek poleca sprawdzony i bezpieczny \u003Ca href=\u0022http:\/\/adevo.pl\/serwer-www\/\u0022\u003EHostingu Adevo\u003C\/a\u003E.\n\u003Ch4\u003E\u003Cstrong\u003E2. Szyfrowanie SSL strony internetowej\n\u003C\/strong\u003E\u003C\/h4\u003E\nJe\u017celi jeszcze nie wiesz czym jest certyfikat SSL to zapraszamy do artyku\u0142u \u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003ECzym jest certyfikat SSL?\u003C\/a\u003E. Aby podnie\u015b\u0107 bezpiecze\u0144stwo stron internetowych mo\u017cna wdro\u017cy\u0107 certyfikat SSL na stron\u0119 www. O tym jak to zrobi\u0107 dowiesz si\u0119 z kolejnego naszego artyku\u0142u, kt\u00f3ry pojawi\u0142 si\u0119 na \u0142amach portalu Egeek \u003Ca href=\u0022http:\/\/egeek.pl\/jak-zainstalowac-certyfikat-ssl\/\u0022\u003EJak zainstalowa\u0107 certyfikat SSL?\u003C\/a\u003E.\n\nKiedy logujesz si\u0119 do panelu administratora WordPress bez certyfikatu SSL, Twoje dane nie s\u0105 zabezpieczone. Ca\u0142a transmisja wymiany danych z serwerem a przegl\u0105darka nie jest szyfrowana. W praktyce oznacza to mniej wi\u0119cej tyle, \u017ce istnieje mo\u017cliwo\u015b\u0107 pods\u0142uchania wpisywanego has\u0142a. Szyfrowanie zapewnia \u003Cstrong\u003Ebezpieczn\u0105 transmisj\u0119 danych i zapobiega uzyskaniu przez osoby nieuprawnione informacji nawet z pods\u0142uchanej transmisji sieciowej\u003C\/strong\u003E.\n\u003Ch4\u003E\u003Cstrong\u003E3. Bezpiecze\u0144stwo hase\u0142 na stronie www\u003C\/strong\u003E\u003C\/h4\u003E\n\u003Cstrong\u003EW\u0142amanie na stron\u0119 mo\u017ce by\u0107 naprawd\u0119 bardzo proste, je\u017celi nie zastosujesz odpowiednich\u003C\/strong\u003E i skomplikowanych hase\u0142. Oto fragment artyku\u0142u \u003Ca href=\u0022http:\/\/egeek.pl\/haslo-a-bezpieczenstwo-informacji\/\u0022 target=\u0022_blank\u0022 rel=\u0022noopener noreferrer\u0022\u003EHas\u0142o a bezpiecze\u0144stwo informacji\u003C\/a\u003E na naszym portalu:\n\n\u003Cem\u003E\u003Cstrong\u003ERegularna zmiana has\u0142a\u003C\/strong\u003E\u003C\/em\u003E\n\n\u003Cem\u003ECz\u0119ste zmiany has\u0142a powoduj\u0105, i\u017c u\u017cytkownicy mog\u0105 \u003Cstrong\u003Emie\u0107 problem z jego zapami\u0119taniem\u003C\/strong\u003E. Dlatego cz\u0119sto u\u017cytkownicy zapisuj\u0105 has\u0142a w notatniku czy pliku tekstowym na komputerze. Niestety cz\u0119ste s\u0105 te\u017c przypadki w korporacjach, gdzie comiesi\u0119czna zmiana has\u0142a powoduje i\u017c pracownicy u\u017cywaj\u0105 \u0142atwych do zapami\u0119tania hase\u0142 np. marzec2017, Kwiecie\u01442017. Je\u017celi jeste\u015b tak\u0105 osob\u0105 to mamy nadzieje \u017ce po przeczytaniu tego artyku\u0142u nie b\u0119dziesz tak robi\u0142.\u003C\/em\u003E\n\n\u003Cem\u003E\u003Cstrong\u003EGdzie zapisywa\u0107 has\u0142a?\u003C\/strong\u003E\u003C\/em\u003E\n\n\u003Cem\u003EOdpowiedzi\u0105 na to pytanie s\u0105 menad\u017cery hase\u0142. Polecamy np. program desktopowy \u003Ca href=\u0022http:\/\/keepass.info\/\u0022\u003EKeePass\u003C\/a\u003E.\u003C\/em\u003E\n\u003Ch4\u003E\u003Cem\u003E2. Silne has\u0142o\u003C\/em\u003E\u003C\/h4\u003E\n\u003Cem\u003EZapewne nie raz s\u0142ysza\u0142e\u015b komunikat: u\u017cywaj bezpiecznego has\u0142a. No tak zgadza si\u0119, ale jakie has\u0142o jest bezpieczne? co jaki\u015b czas zwi\u0119kszaj\u0105 si\u0119 wymagania dla has\u0142a uznawanego jako silne. Do \u0142amania hashy u\u017cywa si\u0119 kart graficznych, dzi\u0119ki kt\u00f3rym proces \u0142amania mo\u017cna wykona\u0107 nawet 1000 razy szybciej ni\u017c z wykorzystaniem procesor\u00f3w.\u003C\/em\u003E\n\n\u003Cem\u003EHas\u0142o powinno mie\u0107 \u003Cstrong\u003Eminimum 10 znak\u00f3w\u003C\/strong\u003E. Powinno sk\u0142ada\u0107 si\u0119 z ma\u0142ych, du\u017cych litery oraz cyfr jak r\u00f3wnie\u017c znak\u00f3w specjalnych takich jak: !@#$%^\u0026amp;*().\u003C\/em\u003E\n\n\u003Cem\u003EPrzyk\u0142ady dobrych hase\u0142: Al()Ksbn64*, k9lk09k%^\u0026amp;, MBV?\u0026gt;\u0026lt;*(963147\u003C\/em\u003E\n\u003Ch4\u003E\u003Cem\u003E3. Dostarczanie has\u0142a\u003C\/em\u003E\u003C\/h4\u003E\n\u003Cem\u003EPami\u0119taj aby nie przesy\u0142a\u0107 nikomu danych dost\u0119powych jawnym tekstem drog\u0105 elektroniczn\u0105 poprzez chat, email itd. Zanim wiadomo\u015b\u0107 trafi do odbiorcy przechodzi przez co najmniej kilka serwer\u00f3w. Po drugie nie masz nigdy pewno\u015bci kto otworzy wiadomo\u015b\u0107 po drugiej stronie. Skorzystaj wi\u0119c z szyfrowania wiadomo\u015bci. Je\u017celi koniecznie musisz wys\u0142a\u0107 wiadomo\u015b\u0107 z has\u0142em to u\u017cyj dw\u00f3ch form komunikacji. Wy\u015blij SMS-em has\u0142o a login droga e-mail.\u003C\/em\u003E\n\nAby tworzy\u0107 unikalne has\u0142a mo\u017cemy u\u017cy\u0107 generatora hase\u0142 dost\u0119pnego w menad\u017cerze hase\u0142 jakim jest KeePass albo skorzysta\u0107 z generatora na stronie online \u003Ca href=\u0022http:\/\/www.pctools.com\u0022 target=\u0022_blank\u0022 rel=\u0022nofollow noopener noreferrer\u0022\u003Ehttp:\/\/www.pctools.com\/guides\/password\/\/\u003C\/a\u003E\n\u003Ch4\u003EJestem jednak zwolennikiem generowania takich hase\u0142 w lokalnym \u015brodowisku. Wi\u0119kszo\u015b\u0107 takich generator\u00f3w online w regulaminie zaznacza i\u017c has\u0142a nie s\u0105 nigdzie zapisywane. Ale lepiej dmucha\u0107 na zimne\u003C\/h4\u003E\n\u003Ch4\u003E4. Administracja strony www z bezpiecznego miejsca\u003C\/h4\u003E\nKiedy edytujesz stron\u0119 dodaj\u0105c wpis czy modyfikujesz kod strony poprzez FTP podajesz dane uwierzytelniaj\u0105ce. Tak\u0105 drog\u0105 bardzo cz\u0119sto dochodzi do w\u0142amania na stron\u0119. Musisz zadba\u0107 o bezpieczne \u015brodowisko pracy. Zabezpiecz sie\u0107 LAN czy WLAN. Je\u017celi nie wiesz jak to zrobi\u0107 zapraszamy do cyklu artyku\u0142\u00f3w na temat \u003Ca href=\u0022http:\/\/egeek.pl\/bezpieczenstwo-sieci-wifi-wstep\/\u0022\u003EBezpiecze\u0144stwa sieci Wifi\u003C\/a\u003E\u003Cstrong\u003E. \u003C\/strong\u003E\n\n\u003Cstrong\u003EZadbaj tak\u017ce o komputer\u003C\/strong\u003E, z kt\u00f3rego logujesz si\u0119 na witryn\u0119 internetow\u0105. Nie, nie chodzi tutaj o czysty monitor.\u00a0Zainstaluj \u003Cstrong\u003Eoprogramowanie antywirusowe i antyspyware. \u003C\/strong\u003E Postaraj si\u0119 tak\u017ce o zabezpieczenia sprz\u0119tu przed osobami trzecimi.\u00a0 To tak\u017ce pomo\u017ce ochroni\u0107 Ci\u0119 przed atakami cracker\u00f3w. Je\u017celi \u0142\u0105czysz si\u0119 ze swoim serwerem strony poprzez klienta FTP, nie zapisuj has\u0142a czy samej sesji. Has\u0142a powinny by\u0107 albo w twojej g\u0142owie, albo w menad\u017cerze hase\u0142.\n\nW przypadku, gdy do strony maj\u0105 dost\u0119p pracownicy czy redaktorzy, powiniene\u015b zadba\u0107 o ograniczenia \u003Cstrong\u003Euprawnie\u0144, przydzielanych poszczeg\u00f3lnym cz\u0142onkom\u003C\/strong\u003E zespo\u0142u. Dotyczy to zar\u00f3wno FTP, jak i zaplecza strony. Osoba dodaj\u0105ca artyku\u0142y na stronie nie musi posiada\u0107 dost\u0119pu administracyjnego. Nawet je\u017celi bardzo ufamy danej osobie i nie spodziewamy si\u0119 z jej strony \u017cadnych z\u0142o\u015bliwo\u015bci, to nawet przez przypadek taka osoba mo\u017ce spowodowa\u0107 b\u0142\u0105d na stronie. Prosty przyk\u0142ad Redaktor artyku\u0142\u00f3w nie potrzebuje dost\u0119pu do Edytora szablonu WordPress.\n\u003Ch5\u003E\u003C\/h5\u003E\n\u003Ch5\u003E\u003Cstrong\u003EWordPress posiada uprawnienia:\u003C\/strong\u003E\u003C\/h5\u003E\n\u003Cul\u003E\n \t\u003Cli\u003E\u003Cstrong\u003ESubskrybent\u003C\/strong\u003E - to u\u017cytkownik, kt\u00f3ry posiada login i has\u0142o do panelu administracyjnego. Ma mo\u017cliwo\u015b\u0107 komentowania wpis\u00f3w. Po zalogowaniu mo\u017ce zmieni\u0107 dane swojego profilu.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EWsp\u00f3\u0142pracownik\u003C\/strong\u003E - mo\u017ce dodawa\u0107 wpisy, ale nie mo\u017ce ich publikowa\u0107. Wsp\u00f3\u0142pracownik ma mo\u017cliwo\u015b\u0107 edycji i kasowania swoich wpis\u00f3w przed publikacj\u0105.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EAutor\u003C\/strong\u003E - mo\u017ce dodawa\u0107 i publikowa\u0107 w\u0142asne wpisy oraz edytowa\u0107 je i usuwa\u0107. Mo\u017ce tak\u017ce dodawa\u0107 pliki do biblioteki multimedi\u00f3w i zamieszcza\u0107 je w swoich wpisach.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003ERedaktor\u003C\/strong\u003E - mo\u017ce publikowa\u0107, edytowa\u0107 i usuwa\u0107 wpisy innych u\u017cytkownik\u00f3w, zarz\u0105dza\u0107 kategoriami i tagami wpis\u00f3w, edytowa\u0107 i usuwa\u0107 pliki w bibliotece multimedi\u00f3w, zarz\u0105dza\u0107 komentarzami oraz dodawa\u0107 i publikowa\u0107 strony.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EAdministrator\u003C\/strong\u003E \u2013 mo\u017ce zarz\u0105dza\u0107 tre\u015bciami jak i zajmowa\u0107 si\u0119 sprawami technicznymi, takimi jak wykonywanie aktualizacji, zarz\u0105dzanie u\u017cytkownikami, zarz\u0105dzanie wtyczkami, zmiany w ustawieniach strony oraz motywu.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ctable style=\u0022height: 1094px;\u0022 width=\u00221352\u0022\u003E\n\u003Ctbody\u003E\n\u003Ctr\u003E\n\u003Ctd\u003E\u003Cstrong\u003EUprawnienia poszczeg\u00f3lnych r\u00f3l u\u017cytkownik\u00f3w w WordPressie\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003Cstrong\u003EAdministrator\n\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003Cstrong\u003ERedaktor\n\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003Cstrong\u003EAutor\n\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003Cstrong\u003EWsp\u00f3\u0142pracownik\n\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003Cstrong\u003ESubSkrybent\n\u003C\/strong\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EPrzegl\u0105danie wpis\u00f3w innych u\u017cytkownik\u00f3w\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EDodawanie komentarzy\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EZmiana danych swojego profilu\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EPrzegl\u0105danie komentarzy\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EDodawanie nowych wpis\u00f3w (do przegl\u0105du)\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EEdytowanie i kasowanie w\u0142asnych wpis\u00f3w (przed publikacj\u0105)\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EPublikowanie w\u0142asnych wpis\u00f3w\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EEdytowanie i kasowanie w\u0142asnych wpis\u00f3w (r\u00f3wnie\u017c po publikacji)\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EPrzegl\u0105danie biblioteki medi\u00f3w\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EWstawianie medi\u00f3w do biblioteki i swoich wpis\u00f3w\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EPublikowanie wpis\u00f3w innych u\u017cytkownik\u00f3w\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EEdytowanie u suwanie wpis\u00f3w innych u\u017cytkownik\u00f3w\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EEdytowanie i usuwanie medi\u00f3w z biblioteki\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EDodawanie i edytowanie stron\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EZarz\u0105dzanie komentarzami\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EZarz\u0105dzanie tagami i kategoriami\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EZmienianie ustawie\u0144 strony\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EZmienianie wygl\u0105du strony (np. motywu)\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EInstalowanie i usuwanie wtyczek\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EZarz\u0105dzanie u\u017cytkownikami\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003Ctd\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd\u003EWykonywanie aktualizacji\u003C\/td\u003E\n\u003Ctd\u003E+\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003C\/tbody\u003E\n\u003C\/table\u003E\nU\u017cywaj kont z uprawnieniami minimalnymi, kt\u00f3rych potrzebujesz aby wykona\u0107 dzia\u0142anie na stronie internetowej.\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Ch4\u003E\u003Cstrong\u003E5. Unikalna nazwa bazy danych \u003C\/strong\u003E\u003C\/h4\u003E\nPodczas pierwszej instalacji WordPress-a nale\u017cy wprowadzi\u0107 nazw\u0119 bazy danych, nazw\u0119 u\u017cytkownika i jego has\u0142o. Je\u017celi chodzi np. o nazw\u0119 loginu w koncie hostingowym to raczej nie mamy wp\u0142ywu na wygl\u0105d, ale na nazw\u0119 bazy danych i has\u0142o ju\u017c tak. Pierwszy cz\u0142on nazwy bazy danych przewa\u017cnie generowany jest z automatu, ale drugi cz\u0142on, kt\u00f3rym jest w\u0142a\u015bciw\u0105 nazw\u0105 bazy danych zale\u017cny od naszej wyobra\u017ani.\n\nNo i w\u0142a\u015bnie niech nas poniesie fantazja. Niech nazwa bazy danych b\u0119dzie d\u0142uga i skomplikowana. Has\u0142o ustawiamy oczywi\u015bcie zgodnie ze standardami hase\u0142 o kt\u00f3rych pisali\u015bmy wcze\u015bniej. Wszystkie dane konfigurujemy i tworzymy w Panelu administratora serwera www, a podczas uruchamiania instalacji WordPress-a uzupe\u0142niamy tylko te dane w celu po\u0142\u0105czenia z baz\u0105 danych. Dobr\u0105 praktyk\u0105 jest tak\u017ce zmiana prefiksu bazy danych z domy\u015blnej \u201ewp_\u201d.\n\nWarto jednak zaznaczy\u0107, \u017ce o wiele bezpieczniejsz\u0105 opcj\u0105 jest uzupe\u0142nianie tego typu danych bezpo\u015brednio bezpo\u015brednio w pliku \u003Cem\u003E\u003Cstrong\u003Ewp-config.php \u003C\/strong\u003E\u003C\/em\u003E\u003Cstrong\u003Eni\u017c\u003C\/strong\u003E\u003Cstrong\u003E poprzez konfigurator WP.\u003C\/strong\u003E Plik ten znajduje si\u0119 w g\u0142\u00f3wnym katalogu WordPress. Podczas pierwszej instalacji plik ten jest pod nazw\u0105 \u003Cem\u003Ewp-config-sample.php\u003C\/em\u003E - nale\u017cy zmieni\u0107 nazw\u0119 tego pliku na \u003Cem\u003Ewp-config\u003C\/em\u003E.\u003Cstrong\u003E\n\u003C\/strong\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cstrong\u003ERysunek 1.4.\u003C\/strong\u003E konfiguracja pliku wp-config.php\u003C\/p\u003E\nKolejnym krokiem b\u0119dzie stworzenie nazwy u\u017cytkownika i has\u0142a dla konta administratora\n\u003Cul\u003E\n \t\u003Cli\u003ENazwa u\u017cytkownika \u2013 oczywi\u015bcie zmieniamy sugerowan\u0105 nazw\u0119 u\u017cytkownika \u003Cem\u003Eadmin\u003C\/em\u003E przez system WP na bardziej skomplikowan\u0105 np. Ad6789X. Je\u017celi posiadamy ju\u017c zainstalowany system WP mo\u017cemy zmieni\u0107 nazw\u0119 poprzez wtyczk\u0119 WP lub prosty skrypt SQL:\n\u003Cpre\u003EUPDATE wp_users SET user_login = \u0027newuser\u0027 WHERE user_login = \u0027admin\u0027;\u003C\/pre\u003E\n\u003C\/li\u003E\n \t\u003Cli\u003EHas\u0142o - uzupe\u0142niamy zgodnie ze wskaz\u00f3wkami systemu WP\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cem\u003EJe\u015bli pozostawisz to pole puste, has\u0142o zostanie automatycznie wygenerowane.\u003C\/em\u003E\n\u003Cem\u003EWskaz\u00f3wka: Twoje has\u0142o powinno sk\u0142ada\u0107 si\u0119 z co najmniej siedmiu znak\u00f3w. Aby by\u0142o ono silniejsze, mo\u017cesz skorzysta\u0107 z wielkich i ma\u0142ych liter, cyfr i symboli, takich jak !, \u201e, ?, $, %, ^, \u0026amp; czy ).\u003C\/em\u003E\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Ch4\u003E\u003Cstrong\u003E6. Konfiguracja pliku wp-config\u003C\/strong\u003E\u003C\/h4\u003E\n\u003Col\u003E\n \t\u003Cli\u003E\n\u003Ch5\u003E\u003Cstrong\u003EWy\u0142\u0105czenie trybu wp_debug\u003C\/strong\u003E\u003C\/h5\u003E\nDomy\u015blnie tryb ten jest wy\u0142\u0105czony, co w praktyce oznacza, \u017ce b\u0142\u0119dy powsta\u0142e podczas u\u017cytkowania strony nie b\u0119d\u0105 si\u0119 wy\u015bwietla\u0142y na stronie u\u017cytkownikom. Wy\u015bwietlanie takich informacji mo\u017ce spowodowa\u0107 du\u017ce u\u0142atwienie dla atakuj\u0105cych.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cpre\u003Edefine(\u0027WP_DEBUG\u2019, false);\u003C\/pre\u003E\noraz dla skrypt\u00f3w\n\u003Cpre\u003Edefine(\u0027SCRIPT_DEBUG\u2019, false);\ndefine(\u0027CONCATENATE_SCRIPTS\u2019, false);\u003C\/pre\u003E\n\u003Ch5\u003E\u003C\/h5\u003E\n\u003Ch5\u003E\u003Cstrong\u003E2. Wy\u0142\u0105czenie edytora szablon\u00f3w z poziomu zaplecza strony\u003C\/strong\u003E\u003C\/h5\u003E\nMo\u017cna r\u00f3wnie\u017c wy\u0142\u0105czy\u0107 mo\u017cliwo\u015b\u0107 bezpo\u015bredniego edytowania szablonu z poziomu kokpitu strony.\n\u003Cpre\u003Edefine(\u0027DISALLOW_FILE_EDIT\u0027 ,true);\u003C\/pre\u003E\n\u003Ch5\u003E\u003C\/h5\u003E\n\u003Ch5\u003E\u003Cstrong\u003E3. Wymuszenie SSL na kokpicie strony\u003C\/strong\u003E\u003C\/h5\u003E\nJe\u017celi zdecydujesz si\u0119 na certyfikat SSL to mo\u017cesz wymusi\u0107 na u\u017cytkownikach alby logowali si\u0119 tylko przy pomocy bezpiecznego protoko\u0142u Https\n\u003Cpre\u003E\/\/ Dla panelu logowania dla u\u017cytkownik\u00f3w define(\u0027FORCE_SSL_LOGIN\u2019, true); \/\/Dla ca\u0142ego zaplecza define(\u0027FORCE_SSL_ADMIN\u2019, true);\u003C\/pre\u003E\n\u003Ch2\u003E\u003C\/h2\u003E\n\u003Ch4\u003E\u003Cstrong\u003E7. Ustawienie prawa dost\u0119pu do folder\u00f3w i plik\u00f3w WordPress\u003C\/strong\u003E\u003C\/h4\u003E\nNast\u0119pnym etapem pracy w zabezpieczeniu strony opartej na WP jest dostosowanie odpowiednich uprawnie\u0144 dla plik\u00f3w. Uprawnienia do plik\u00f3w i katalog\u00f3w zmieniamy z poziomu klienta FTP (polecamy WinSCP).\n\u003Ch5\u003E\u003Cstrong\u003E7.1 Uprawnienia plik\u00f3w i folder\u00f3w\u003C\/strong\u003E\u003C\/h5\u003E\n\u003Cstrong\u003E777\u003C\/strong\u003E \u2013 Pe\u0142ne prawa dost\u0119pu\n\u003Cstrong\u003E755\u003C\/strong\u003E \u2013 W\u0142a\u015bciciel ma wszystkie prawa do pliku, reszta (Grupa, Inni) tylko prawo do odczytu i uruchomienia\n\u003Cstrong\u003E640\u003C\/strong\u003E \u2013 W\u0142a\u015bciciel ma prawo do zapisu i odczytu, a reszta tylko prawo odczytu\n\u003Cstrong\u003E600\u003C\/strong\u003E \u2013 Tylko w\u0142a\u015bciciel ma prawo do odczytu i zapisu\n\nOg\u00f3lna idea jest taka, aby wszystkie katalogi mia\u0142y uprawnienia 755 lub 750, natomiast wszystkie pliki 644 lub 640. Wyj\u0105tkiem od regu\u0142y jest plik \u003Cem\u003Ewp-config.php\u003C\/em\u003E kt\u00f3ry, powinien by\u0107 ustawiony na 600.\n\n\u003Cstrong\u003EDomy\u015blne uprawnienia:\u003C\/strong\u003E\n\n644 -rw-r\u2013r\u2013 \/home\/user\/wp-config.php\n644 -rw-r\u2013r\u2013 \/home\/user\/cgi-bin\/.htaccess\n644 -rw-r\u2013r\u2013 \/home\/user\/cgi-bin\/php.ini\n755 -rwxr-xr-x \/home\/user\/cgi-bin\/php.cgi\n755 -rwxr-xr-x \/home\/user\/cgi-bin\/php5.cgi\n\n\u003Cstrong\u003EBezpieczne uprawnienia:\u003C\/strong\u003E\n\n600 -rw\u2014\u2014- \/home\/user\/wp-config.php\n604 -rw\u2014-r\u2013 \/home\/user\/cgi-bin\/.htaccess\n600 -rw\u2014\u2014- \/home\/user\/cgi-bin\/php.ini\n711 -rwx\u2013x\u2013x \/home\/user\/cgi-bin\/php.cgi\n100 \u2014x\u2014\u2014 \/home\/user\/cgi-bin\/php5.cgi\n\n\u003Cstrong\u003EUwaga!\u003C\/strong\u003E\n\nNiekt\u00f3re wtyczki wymagaj\u0105 dost\u0119pu ca\u0142ego folderu \/wp-content\/ (chmod 755). Jak r\u00f3wnie\u017c innych podwy\u017cszonych uprawnie\u0144 plik\u00f3w do prawid\u0142owego dzia\u0142ania.\n\u003Ch2\u003E\u003C\/h2\u003E\n\u003Ch4\u003E\u003Cstrong\u003E8. Ochrona pliku wp-config.php\u003C\/strong\u003E\u003C\/h4\u003E\nJak ju\u017c wiemy w pliku \u003Cem\u003Ewp-config.php\u003C\/em\u003E mamy zapisane dane jawnym tekstem do bazy danych. Je\u017celi taki plik konfiguracyjny trafi w niepowo\u0142ane r\u0119ce, kto\u015b zyska dost\u0119p do ca\u0142ej strony. Mo\u017cemy zmieni\u0107 standardow\u0105 lokalizacj\u0119 tego pliku przenosz\u0105c go, np. poziom wy\u017cej w strukturze katalog\u00f3w www.\n\nDrugie podej\u015bcie to zablokowanie edycji pliku \u003Cem\u003Ewp-config.php. A\u003C\/em\u003Eby tego dokona\u0107 w pliku \u003Cem\u003E.htaccess\u003C\/em\u003E umieszczamy taki o to kod:\n\u003Cpre\u003E\u0026lt;files wp-config.php\u0026gt;  order allow,deny  deny from all  \u0026lt;\/files\u0026gt;\u003C\/pre\u003E\n\u003Ch4\u003E\u003Cstrong\u003E9. Usuniecie wersji WordPress\u003C\/strong\u003E\u003C\/h4\u003E\nAtakuj\u0105cy przed wykonaniem samego ataku najpierw przeprowadzi rekonesans strony. Przegl\u0105dnie otwarte porty, sprawdzi m.in. wersje serwera www, platformy interpretera PHP, bazy danych no i systemu CMS. Brew pozorom to bardzo cenne informacje.\n\nSamo ukrycie informacji i\u017c korzystamy z CMS WordPress nie jest rzecz\u0105 prost\u0105. Musieliby\u015bmy zmieni\u0107 nazw\u0119 plik\u00f3w katalog\u00f3w no i kod strony. Tutaj mam na my\u015bli refaktoryzacj\u0119 kodu strony. Ukrycie wersji WordPress jest znacznie prostsze. W kodzie strony w sekcji \u003Cem\u003Ehead\u003C\/em\u003E WordPress dodaje linijk\u0119;\n\u003Cpre\u003E\u0026lt;meta name=\u0022generator\u0022 content=\u0022WordPress x.x.x\u0022 \/\u0026gt;\u003C\/pre\u003E\nAby pozby\u0107 si\u0119 tego wpisu w pliku \u003Cem\u003Ewp-include\/function.php dodajemy\u003C\/em\u003E\n\u003Cpre\u003Efunction egeek_remove_version() {\nreturn \u0027\u0027;\n}\nadd_filter(\u0027the_generator\u0027, \u0027egeek_remove_version\u0027);\u003C\/pre\u003E\n\u003Ccite\u003EDodatkowo usuwamy tak\u017ce z katalogu g\u0142\u00f3wnego strony plik readme.html w kt\u00f3rym znajduje si\u0119 informacja o wersji systemu CMS.\n\u003C\/cite\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.5. Plik readme.html WordPress z wersj\u0105 systemy CMS\u003C\/p\u003E\n\n\u003Ch3\u003E\u003Cstrong\u003E10. Blokada indeksowania przez wyszukiwarki cz\u0119\u015bci plik\u00f3w\u003C\/strong\u003E\u003C\/h3\u003E\nAby pozby\u0107 si\u0119 indeksowania przez wyszukiwarki internetowe plik\u00f3w kt\u00f3re nie powinny by\u0107 widoczne dodajemy do pliku \u003Cem\u003Erobots.txt \u003C\/em\u003Ekod:\n\u003Cpre\u003EUser-agent: *\nDisallow: \/feed\/\nDisallow: \/trackback\/\nDisallow: \/wp-admin\/\nDisallow: \/wp-content\/\nDisallow: \/wp-includes\/\nDisallow: \/xmlrpc.php\n\u003C\/pre\u003E\nPlik \u003Cem\u003Erobotx.txt powinien znajdowa\u0107 si\u0119 w g\u0142\u00f3wnym katalogu strony. Je\u017celi go nie posiadasz mo\u017cesz go stworzy\u0107. Popularne wtyczki WP SEO takie jak All in One czy Yoast SEO umo\u017cliwiaj\u0105 edycje tego pliku z poziomu zaplecza.\u003C\/em\u003E\n\u003Ch3\u003E\u003Cstrong\u003E11. Edycja pliku .htaccess\u003C\/strong\u003E\u003C\/h3\u003E\nZacznijmy od tego czym jest plik \u003Cem\u003E.htaccess\u003C\/em\u003E - jest to ukryty plik konfiguracyjny serwera WWW, kt\u00f3ry pozwala skonfigurowa\u0107 wiele jego parametr\u00f3w. Mo\u017cemy dokona\u0107 tego, dodaj\u0105c nowe lub nadpisuj\u0105c dyrektywy ustawione w g\u0142\u00f3wnym pliku konfiguracyjnym serwera, czyli httpd.conf. Wa\u017cna uwaga, plik ten dzia\u0142a w obr\u0119bie ca\u0142ego katalogu, w kt\u00f3rym si\u0119 znajduje, jak r\u00f3wnie\u017c w podkatalogach. Mo\u017cemy tak\u017ce nadpisa\u0107 plik og\u00f3lny w poszczeg\u00f3lnych katalogach dzi\u0119ki umieszczaniu kolejnego plik \u003Cem\u003E.htaccess\u003C\/em\u003E.\n\n\u003Cstrong\u003EDodaj\u0105c kilka regu\u0142 do pliku konfiguracyjnego serwera \u003Cem\u003E.htaccess\u003C\/em\u003E\u003C\/strong\u003E mo\u017cemy podnie\u015b\u0107 bezpiecze\u0144stwo strony:\n\u003Cpre\u003E\/\/ Wy\u0142aczenie listowania ktalog\u00f3w\nOptions All -Indexes\n\/\/ Zabezpieczenie pliku .htaccess\n\u0026lt;files .htaccess\u0026gt;\norder allow,deny\ndeny from all\n\u0026lt;\/files\u0026gt;\n\/\/ Wy\u0142aczenie sygnatur\nServerSignature Off\n\/\/ Ustawienie limitu uploads do 10MB\nLimitRequestBody 10240000\n\/\/ Ochrona pliku wpconfig.php.\n\u0026lt;files wp-config.php\u0026gt;\norder allow,deny\ndeny from all\n\u0026lt;\/files\u0026gt;\u003C\/pre\u003E\n\u003Ch3\u003E\u003Cstrong\u003E12. U\u017cyj CDN dla swojej strony www\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Ch4\u003E\u003Cstrong\u003ECzym jest CloudFlare?\u003C\/strong\u003E\u003C\/h4\u003E\n\u003Cp align=\u0022justify\u0022\u003ECloudFlare to tzw. CDN (ang. Cloud Delivery Network), kt\u00f3ry pozwala na przyspieszenie strony WWW dzi\u0119ki temu, \u017ce skraca drog\u0119 pomi\u0119dzy klientem a serwerem, z kt\u00f3rego s\u0105 wczytywane dane strony internetowej. Takich serwer\u00f3w na ca\u0142ym \u015bwiecie jest bardzo du\u017co. Serwer CDN CloudFlare znajduje si\u0119 tak\u017ce w Warszawie. CloudFlare \u015bwiadczy wiele us\u0142ug gdzie cz\u0119\u015b\u0107 z nich jest za darmo np. CDN, ochrona przed DDOS, ukrycie prawdziwych adres\u00f3w DNS, mo\u017cliwo\u015b\u0107 po\u0142\u0105cze\u0144 przez SSL, cachowanie strony za pomoc\u0105 expires, auto minify czyli kompresja kodu HTML, JS oraz CSS. CloudFlare pomo\u017ce nam r\u00f3wnie\u017c gdy nasza stronie padnie ofiara ataku sieciowego, poniewa\u017c umo\u017cliwia wy\u015bwietlanie strony u\u017cytkownikom, nawet w przypadku gdy fizycznie nasz serwer jest niedost\u0119pny. CDN pozwoli ukry\u0107 prawdziwy adres IP naszej strony www, co umo\u017cliwia utrzymywanie na hostingu kilku stron, serwer b\u0119dzie mniej obci\u0105\u017cony, a boty Google nie b\u0119d\u0105 widzia\u0142y i\u017c dane strony maj\u0105 taki sam adres co pozwoli wzajemnie je pozycjonowa\u0107 z wysokim rezultatem.\u003C\/p\u003E\n\n\u003Ch3\u003E\u003Cstrong\u003EPodsumowanie zabezpiecze\u0144 Wordpress\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003EAktualizuj WordPress do najnowszej wersji\u003C\/li\u003E\n \t\u003Cli\u003EPobieraj szablony i wtyczki tylko z zaufanych \u017ar\u00f3de\u0142\u003C\/li\u003E\n \t\u003Cli\u003EAktualizuj wtyczki\u003C\/li\u003E\n \t\u003Cli\u003ERegularnie wykonuj backup plik\u00f3w, strony i bazy danych\u003C\/li\u003E\n \t\u003Cli\u003EKorzystaj ze sprawdzonego us\u0142ugodawcy hostingowego\u003C\/li\u003E\n \t\u003Cli\u003EPami\u0119taj o mocnych has\u0142ach\u003C\/li\u003E\n \t\u003Cli\u003EUstaw uprawnia plik\u00f3w\u003C\/li\u003E\n \t\u003Cli\u003EWy\u0142\u0105cz rejestracj\u0119 u\u017cytkownik\u00f3w je\u017celi to nie potrzebne (WP)\u003C\/li\u003E\n \t\u003Cli\u003EUstaw adresy IP, kt\u00f3re mog\u0105 logowa\u0107 si\u0119 do witryny (Hosting strony)\u003C\/li\u003E\n \t\u003Cli\u003EZablokuj dost\u0119pu robotom do katalog\u00f3w, kt\u00f3re ne musz\u0105 widzie\u0107\u003Cstrong\u003E\n\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003EU\u017cyj CDN\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Ch3\u003E\u003Cstrong\u003EJak zabezpieczy\u0107 stron\u0119 na wypadek ataku?\u003C\/strong\u003E\u003C\/h3\u003E\nPomimo nawet najwi\u0119kszych stara\u0144 nad zabezpieczeniem strony, powinni\u015bmy pami\u0119ta\u0107, \u017ce nic nie jest w stanie zagwarantowa\u0107 nam ca\u0142kowitego bezpiecze\u0144stwa. Wykonuj\u0105c powy\u017csze zalecenia nie mo\u017cemy spa\u0107 spokojnie, ale na pewno spokojniej. Dzia\u0142ania zabezpieczenia strony polegaj\u0105 r\u00f3wnie\u017c na przygotowaniu si\u0119 na ewentualny atak na stron\u0119 internetow\u0105. \u003Cstrong\u003EBezpieczna strona internetowa to taka, kt\u00f3ra jest r\u00f3wnie\u017c przygotowana na szybkie przywr\u00f3cenie do pierwotnego funkcjonowania sprzed ataku\u003C\/strong\u003E.\n\nBezpiecze\u0144stwo strony www to nie jest \u0142atwe zadanie. Szczeg\u00f3lnie trudne, poniewa\u017c Webdeveloperzy musz\u0105 co chwil\u0119 mierzy\u0107 si\u0119 z nowymi formami zagro\u017ce\u0144 tzw. \u003Cem\u003E\u003Cstrong\u003Eexploit\u2019\u00f3w\u003C\/strong\u003E\u003C\/em\u003E. Witryna internetowa cz\u0119sto pe\u0142ni rol\u0119 platformy dla biznesu. Dlatego, warto zleci\u0107 profesjonalist\u0105 opiek\u0119 nad stron\u0105 www.","date_published":"2017-05-09T17:26:07+02:00","date_modified":"2024-03-25T22:33:21+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI","WWW","WordPress","SEO"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/slownik-pojec-informatycznych-siec-internet","url":"https:\/\/tomekkowalczyk.pl\/blog\/slownik-pojec-informatycznych-siec-internet","title":"S\u0142ownik poj\u0119\u0107 informatycznych - SIE\u0106 INTERNET","summary":"Przedstawiam s\u0142ownik poj\u0119\u0107 IT zwi\u0105zanych z sieci\u0105 Internet. S\u0142ownik b\u0119dzie sukcesywnie uzupe\u0142niany o nowe poj\u0119cia, zapraszamy do udzia\u0142u w rozwoju s\u0142ownika poj\u0119\u0107 IT z kategorii sie\u0107 Internet.","content_html":"\u003Ch2 class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\u003Cstrong\u003EPrzedstawiam s\u0142ownik poj\u0119\u0107 IT zwi\u0105zanych z sieci\u0105 Internet. S\u0142ownik b\u0119dzie sukcesywnie uzupe\u0142niany o nowe poj\u0119cia, zapraszamy do udzia\u0142u w rozwoju s\u0142ownika poj\u0119\u0107 IT z kategorii sie\u0107 Internet.\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Cstrong\u003EAddress Resolution Protocol (ARP\u003C\/strong\u003E) - jest to protok\u00f3\u0142 sieciowy kt\u00f3ry umo\u017cliwia mapowanie logicznych adres\u00f3w warstwy sieciowej na adresy warstwy \u0142\u0105cza danych.\n\n\u003Cstrong\u003E\u00a0Adres MAC\u003C\/strong\u003E (ang. MAC address) to fizyczny adres karty sieciowej.\n\n\u003Cstrong\u003EAP\u003C\/strong\u003E -\u00a0 (ang. Access Point) urz\u0105dzenie zapewniaj\u0105ce hostom dost\u0119p do sieci komputerowej za pomoc\u0105 bezprzewodowego no\u015bnika transmisyjnego.\n\n\u003Cstrong\u003EARP spoofing\u003C\/strong\u003E \u2013 atak sieciowy pozwalaj\u0105cy atakuj\u0105cemu przechwytywa\u0107 dane przesy\u0142ane\nw obr\u0119bie segmentu sieci lokalnej. Atak polega na rozsy\u0142aniu w sieci LAN spreparowanych pakiet\u00f3w ARP zawieraj\u0105cych fa\u0142szywe adresy fizyczne.\n\n\u003Cstrong\u003EBrute force \u003C\/strong\u003E- algorytm si\u0142owy, kt\u00f3ry opiera si\u0119 na sprawdzeniu wszystkich kombinacji w poszukiwaniu rozwi\u0105zania danego problemu.\n\n\u003Cstrong\u003EBSSID\u003C\/strong\u003E - (ang.\u00a0\u003Cem\u003EBasic Service Set Identifier\u003C\/em\u003E) jest to 48-bitowy numer identyfikacyjny sie\u0107 bezprzewodow\u0105 WLAN nadawany stacjom AP.\n\n\u003Cstrong\u003ECracker\u003C\/strong\u003E - osoba u\u017cywaj\u0105ca gotowych program\u00f3w do \u0142amania zabezpiecze\u0144. W\u015br\u00f3d spo\u0142eczno\u015bci haker\u00f3w takie osoby okre\u015bla si\u0119 jako \u003Cem\u003Escript kiddie\u003C\/em\u003E (\u003Cem\u003Eskryptowy dzieciak\u003C\/em\u003E).\n\n\u003Cstrong\u003EDictionary attack\u003C\/strong\u003E \u2013 technika u\u017cywana do si\u0142owego odgadywania hase\u0142 poprzez przeszukanie s\u0142ownika z danymi uwierzytelniaj\u0105cymi.\n\n\u003Cstrong\u003EDOS\u003C\/strong\u003E - blokada us\u0142ug (ang. Denial of Service) atak na system komputerowy lub us\u0142ug\u0119 sieciow\u0105 w celu uniemo\u017cliwienia dzia\u0142ania.\n\n\u003Cstrong\u003EHacker\u003C\/strong\u003E - osoba o bardzo du\u017cych, praktycznych umiej\u0119tno\u015bciach, znaj\u0105ca wiele j\u0119zyk\u00f3w programowania, znaj\u0105ca \u015bwietnie systemy operacyjne.\n\n\u003Cstrong\u003EHTTP request\u003C\/strong\u003E - \u017c\u0105danie HTTP\n\n\u003Cstrong\u003EHub\u003C\/strong\u003E \u2013 koncentrator, zadaniem urz\u0105dzenia sieciowego, jest przekazywanie sygna\u0142u z jednego portu na wszystkie pozosta\u0142e, bez sprawdzania kto jest adresatem wiadomo\u015bci.\n\n\u003Cstrong\u003EHoneypot\u003C\/strong\u003E \u2013 pu\u0142apka maj\u0105ca na celu wykrycie pr\u00f3b nieautoryzowanego u\u017cycia systemu czy pozyskania danych.\n\n\u003Cstrong\u003EHotspot\u003C\/strong\u003E - jest to otwarty punkt dost\u0119pu, umo\u017cliwiaj\u0105cy po\u0142\u0105czenie z sieci\u0105 Internet, najcz\u0119\u015bciej za pomoc\u0105 sieci bezprzewodowej opartej na standardzie Wi-Fi.\n\n\u003Cstrong\u003EIP\u003C\/strong\u003E \u2013 jest to identyfikator sieci w warstwie trzeciej modelu OSI, w obr\u0119bie sieci lokalnej oraz poza ni\u0105 (tzw. adres publiczny).\n\n\u003Cstrong\u003ELAN\u003C\/strong\u003E - (ang. Local Area Network) to sie\u0107 komputerowa \u0142\u0105cz\u0105ca hosty na okre\u015blonym ma\u0142ym obszarze, takim jak blok, szko\u0142a, dom, itp.\n\u003Cstrong\u003EMIMO \u003C\/strong\u003E- (ang. multiple-input multiple-output) metoda kt\u00f3ra polega na wykorzystaniu kilku anten do r\u00f3wnoleg\u0142ej transmisji kilku strumieni danych.\n\n\u003Cstrong\u003EOSI\u003C\/strong\u003E \u2013 model dzieli proces komunikacji sieciowej na siedem oddzielnych warstw.\n\n\u003Cstrong\u003ERADIUS - \u003C\/strong\u003E(ang. Remote Authentication Dial In User Service) us\u0142uga zdalnego uwierzytelniania u\u017cytkownik\u00f3w.\n\n\u003Cstrong\u003ERouter - inaczej \u003C\/strong\u003Etrasownik, jest to urz\u0105dzenie sieciowe pracuj\u0105ce w III warstwie modelu sieciowym OSI. S\u0142u\u017cy do \u0142\u0105czenia r\u00f3\u017cnych sieci komputerowych.\n\n\u003Cstrong\u003ESie\u0107 VLAN\u003C\/strong\u003E - (ang. Virtual Local Area Network) to wydzielona logicznie sie\u0107 urz\u0105dze\u0144 w ramach innej, wi\u0119kszej sieci fizycznej.\n\n\u003Cstrong\u003ES\u0142up\u003C\/strong\u003E \u2013 osoba u\u017cyta przez przest\u0119pc\u00f3w podczas dokonywania oszustwa internetowego.\n\n\u003Cstrong\u003E\u00a0\u003C\/strong\u003E\n\n\u003Cstrong\u003ESniffer \u003C\/strong\u003E- czyli program komputerowy, kt\u00f3rego zadaniem jest przechwytywanie i analizowanie danych przep\u0142ywaj\u0105cych przez sie\u0107.\n\n\u003Cstrong\u003ESSID\u003C\/strong\u003E - (ang.\u00a0Service Set Identifier) \u2013 identyfikator sieci sk\u0142adaj\u0105cy si\u0119 maksymalnie z 32 znak\u00f3w, dodawany do nag\u0142\u00f3wk\u00f3w pakiet\u00f3w wysy\u0142anych przez bezprzewodow\u0105 sie\u0107 WLAN.\n\n\u003Cstrong\u003EWeb Browser\u003C\/strong\u003E - przegl\u0105darka internetowa\n\n\u003Cstrong\u003EWeb Server\u003C\/strong\u003E - serwer sieciowy\n\n\u003Cstrong\u003EWeb page\u003C\/strong\u003E - strona internetowa (www)\n\n\u003Cstrong\u003EWEP\u003C\/strong\u003E - (ang. Wired Equivalent Privacy) standard szyfrowania stosowany w sieciach bezprzewodowych 802.11.\n\n\u003Cstrong\u003EWi-Fi\u003C\/strong\u003E - (ang. Wireless Fidelity) jest synonimem okre\u015blenia WLAN.\n\n\u003Cstrong\u003EWLAN\u003C\/strong\u003E - (ang. Wirless Local Area Network) sie\u0107 lokalna, w kt\u00f3rej po\u0142\u0105czenia mi\u0119dzy urz\u0105dzeniami sieciowymi realizuje si\u0119 bez u\u017cycia kabli.\n\n\u003Cstrong\u003EWPA - \u003C\/strong\u003E(ang. Wi-Fi Protected Access) standard szyfrowania stosowany w sieciach bezprzewodowych standardu IEEE 802.11.\n\n\u003Cstrong\u003EWPS\u003C\/strong\u003E \u2013 (ang. Wi-Fi Protected Setup) metoda \u0142atwego dost\u0119pu do sieci WLAN, zaimplementowana na urz\u0105dzeniach typu AP.\n\n\u003Cstrong\u003EVPN\u003C\/strong\u003E \u00a0- (ang. Virtual Private Network) jest to wirtualna sie\u0107 prywatna, przez kt\u00f3r\u0105 p\u0142ynie ruch w ramach sieci prywatnej pomi\u0119dzy klientami ko\u0144cowymi za po\u015brednictwem sieci Internet w taki spos\u00f3b, \u017ce osoby pods\u0142uchuj\u0105ce transmisj\u0119 nie b\u0119d\u0105 mog\u0142y jej pods\u0142ucha\u0107.","date_published":"2017-04-24T15:00:41+02:00","date_modified":"2024-03-25T22:34:49+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI","WWW"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/przepis-na-dobre-ciasteczka-internetowe","url":"https:\/\/tomekkowalczyk.pl\/blog\/przepis-na-dobre-ciasteczka-internetowe","title":"Przepis na dobre ciasteczka internetowe","summary":"W dzisiejszym wpisie nie b\u0119dziemy co prawda piec ciasteczek, ale z pewno\u015bci\u0105 odnajdziesz w nim najlepszy przepis na nurtuj\u0105ce Ci\u0119 pytanie: czym s\u0105 ciasteczka internetowe? Na pewno wiele razy widzia\u0142e\u015b na stronie internetowej informacj\u0119, \u017ce strona korzysta z plik\u00f3w cookies. Ale czym tak naprawd\u0119 s\u0105 ciasteczka internetowe? Do czego s\u0142u\u017c\u0105? Na te wszystkie pytania znajdziesz odpowied\u017a poni\u017cej.","content_html":"\u003Ch2\u003EW dzisiejszym wpisie nie b\u0119dziemy co prawda piec ciasteczek, ale z pewno\u015bci\u0105 odnajdziesz w nim najlepszy przepis na nurtuj\u0105ce Ci\u0119 pytanie: czym s\u0105 ciasteczka internetowe? Na pewno wiele razy widzia\u0142e\u015b na stronie internetowej informacj\u0119, \u017ce strona korzysta z plik\u00f3w cookies. Ale czym tak naprawd\u0119 s\u0105 ciasteczka internetowe? Do czego s\u0142u\u017c\u0105? Na te wszystkie pytania znajdziesz odpowied\u017a poni\u017cej.\u003C\/h2\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\nOd Redakcji\n\nWpis jest seria artyku\u0142\u00f3w na temat ciasteczek internetowych\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EPrzepis na dobre ciasteczka internetowe\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003EJak wy\u0142\u0105czy\u0107 ciasteczka internetowe w przegl\u0105darce internetowej?\u003C\/li\u003E\n \t\u003Cli\u003EJak wygl\u0105da plik cookie? Jak edytowa\u0107 ciasteczko internetowe w PHP?\u003C\/li\u003E\n \t\u003Cli\u003EJak wyczy\u015bci\u0107 pliki cookies w przegl\u0105darce internetowej?\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze tematyki ciasteczek internetowych i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z tego zakresu.\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003ECiasteczka internetowe\u003C\/strong\u003E\u003C\/h3\u003E\nCiasteczka cookies to najpro\u015bciej m\u00f3wi\u0105c- pliki tekstowe, w kt\u00f3rych przetrzymywane s\u0105 r\u00f3\u017cne informacje.\u00a0 Informacje przesy\u0142ane s\u0105 przez stron\u0119 www, kt\u00f3r\u0105 odwiedzamy i zapisywane w przegl\u0105darce internetowej na Twoim komputerze.\n\nW plikach cookies, znajduj\u0105 si\u0119 mi\u0119dzy innymi takie wiadomo\u015bci jak: zawarto\u015b\u0107 Twojego koszyka internetowego, dane o preferencjach, jak r\u00f3wnie\u017c dane osobowe.\u00a0 Ale bez obaw :) Takie materia\u0142y s\u0105 zaszyfrowane w spos\u00f3b uniemo\u017cliwiaj\u0105cy dost\u0119p do nich osobom nieuprawnionym.\n\nMo\u017cna powiedzie\u0107, \u017ce wszystkie dzia\u0142aj\u0105ce w Internecie witryny, takie jak\u0022 wyszukiwarki, strony informacyjne, newsowe, sklepy internetowe, mog\u0105 prawid\u0142owo dzia\u0142a\u0107 dzi\u0119ki wykorzystaniu \u201ecookies\u201d.\n\nDzi\u0119ki \u201ecookie\u201d korzystanie ze stron www jest \u0142atwiejsze i przyjemniejsze. Zawarto\u015b\u0107 witryn, w tym teksty, zdj\u0119cia, jak r\u00f3wnie\u017c reklamy- s\u0105 lepiej dopasowana do oczekiwa\u0144 i preferencji ka\u017cdego u\u017cytkownika Internetu.\n\n\u003Cstrong\u003ESk\u0142ad ciasteczka internetowego:\n\u003C\/strong\u003E\n\u003Col\u003E\n \t\u003Cli\u003Einformacje na temat nazwy strony WWW,\u003C\/li\u003E\n \t\u003Cli\u003E\u201ed\u0142ugo\u015b\u0107 \u017cycia\u201d ciasteczka \u2013 innymi s\u0142owy czas jego istnienia na Twoim komputerze,\u003C\/li\u003E\n \t\u003Cli\u003Eunikalny numer s\u0142u\u017c\u0105cy do identyfikacji przegl\u0105darki, z jakiej nast\u0119puje po\u0142\u0105czenie ze stron\u0105 WWW.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cstrong\u003EFunkcje ciasteczka internetowego:\u003C\/strong\u003E\n\u003Cul class=\u0022bs-shortcode-list list-style-check\u0022\u003E\n \t\u003Cli\u003Eumo\u017cliwiaj\u0105 zapami\u0119tywanie naszych preferencji na stronie (m.in. j\u0119zyk strony, kolor, uk\u0142ad, rozmieszczenie tre\u015bci),\u003C\/li\u003E\n \t\u003Cli\u003Epozwalaj\u0105 serwisom internetowym poleca\u0107 nam produkty lub us\u0142ugi zwi\u0105zane z naszymi preferencjami wyszukiwania,\u003C\/li\u003E\n \t\u003Cli\u003Epomagaj\u0105 przechowywa\u0107 produkty umieszczone do zakupowego koszyka w sklepach online,\u003C\/li\u003E\n \t\u003Cli\u003Eumo\u017cliwiaj\u0105 korzystanie z kont internetowych w serwisach,\u003C\/li\u003E\n \t\u003Cli\u003Epozwalaj\u0105 by\u0107 zalogowanym do serwisu na ka\u017cdej z podstron strony,\u003C\/li\u003E\n \t\u003Cli\u003Epozwalaj\u0105 tworzy\u0107 anonimowe statystyki odwiedzialno\u015bci serwis\u00f3w.\u003C\/li\u003E\n\u003C\/ul\u003E\nPami\u0119tajmy jednak, \u017ce ciasteczka nie s\u0142u\u017c\u0105 do identyfikacji u\u017cytkownik\u00f3w. Na ich podstawie w \u017caden spos\u00f3b nie jest tak\u017ce ustalana to\u017csamo\u015b\u0107 w Internecie. Cookies identyfikuj\u0105 jedynie przegl\u0105dark\u0119 \u2013 to oznacza, \u017ce pozwalaj\u0105 dowiedzie\u0107 si\u0119 czy dany komputer ju\u017c odwiedza\u0142 stron\u0119.\n\nPami\u0119tajmy, \u017ce dane przechowywane przez ciasteczka nie s\u0105 szkodliwe ani dla nas ani tym bardziej dla naszych komputer\u00f3w, czy smartfon\u00f3w :)\n\nPonadto, domy\u015blne parametry \u201eciasteczek\u201d pozwalaj\u0105 na odczytanie informacji w nich zawartych jedynie serwerowi, kt\u00f3ry je utworzy\u0142.\n\nOczywi\u015bcie mo\u017cesz wy\u0142\u0105czy\u0107 ciasteczka internetowe w ustawieniach swojej przegl\u0105darki lub uzyska\u0107 ka\u017cdorazow\u0105 informacj\u0119 o przes\u0142aniu pliku na urz\u0105dzenie ko\u0144cowe. Poziom ogranicze\u0144 dotycz\u0105cy stosowania plik\u00f3w \u201ecookies\u201d mo\u017ce wp\u0142yn\u0105\u0107 na dost\u0119pno\u015b\u0107 i funkcjonalno\u015bci oferowane na stronie www. Mo\u017cesz tak\u017ce by\u0107 zasypywany wiadomo\u015bciami, kt\u00f3re nie b\u0119d\u0105 Ci\u0119 interesowa\u0142y, poniewa\u017c serwisy dzia\u0142aj\u0105 w taki spos\u00f3b, \u017ce wy\u015bwietlaj\u0105 odpowiednie tre\u015bci spersonalizowane bezpo\u015brednio pod Ciebie.\n\n22 marca 2013 roku wesz\u0142a ustawa, kt\u00f3ra nak\u0142ada obowi\u0105zek na tw\u00f3rc\u00f3w witryn umieszcza\u0107 na stronach internetowych informacj\u0119, \u017ce strona wykorzystuje takie pliki cookies.\n\nJe\u017celi jeste\u015b wi\u0119c tw\u00f3rc\u0105 witryny, nie zapomnij umie\u015bci\u0107 np. tak\u0105 informacj\u0119 na swojej stronie internetowej:\n\n\u003Cem\u003EW ramach naszej witryny stosujemy pliki cookies w celu \u015bwiadczenia Pa\u0144stwu us\u0142ug na najwy\u017cszym poziomie, w tym w spos\u00f3b dostosowany do indywidualnych potrzeb. Korzystanie z witryny bez zmiany ustawie\u0144 dotycz\u0105cych cookies oznacza, \u017ce b\u0119d\u0105 one zamieszczane w Pa\u0144stwa urz\u0105dzeniu ko\u0144cowym. Mo\u017cecie Pa\u0144stwo dokona\u0107 w ka\u017cdym czasie zmiany ustawie\u0144 dotycz\u0105cych cookies. Wi\u0119cej szczeg\u00f3\u0142\u00f3w w naszej polityce cookies.\u003C\/em\u003E\n\n\u003Cem\u003E\u00a0\u003C\/em\u003E\n\u003Ch3\u003E\u003Cstrong\u003EPodstawowe rodzaje ciasteczek\u003C\/strong\u003E\u003Cstrong\u003E\n\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003E\u201eCookies\u201d sesyjne\u003C\/strong\u003E \u2013 s\u0105 to tymczasowe informacje przechowywane w pami\u0119ci przegl\u0105darki. Przechowywane s\u0105 na urz\u0105dzeniu u\u017cytkownika do wylogowania ze strony internetowej lub wy\u0142\u0105czenia przegl\u0105darki internetowej.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003E\u201eCookies\u201d sta\u0142e\u003C\/strong\u003E \u2013 standardowo s\u0105 przetrzymywane r\u00f3wnie\u017c po zamkni\u0119ciu przegl\u0105darki. To dzi\u0119ki nim, korzystanie z cz\u0119sto odwiedzanych stron jest \u0142atwiejsze (np. zapami\u0119tuj\u0105 wybran\u0105 tre\u015b\u0107). Czas przetrzymywania zale\u017cy od wyboru, kt\u00f3rego mo\u017cna dokona\u0107 w ustawieniach przegl\u0105darki. Sta\u0142e cookies s\u0105 r\u00f3wnie\u017c cz\u0119sto okre\u015blane jako tzw. \u015bledz\u0105ce \u201ecookie\u201d (ang. tracking cookies).\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003E\u201eCookies\u201d podmiot\u00f3w zewn\u0119trznych\u003C\/strong\u003E \u2013 (czyli third parties cookies) to informacje pochodz\u0105ce na przyk\u0142ad z serwer\u00f3w reklamowych. Ten rodzaj cookie pozwala dostosowywa\u0107 reklamy \u2013 dzi\u0119ki kt\u00f3rym korzystanie ze stron internetowych mo\u017ce by\u0107 bezp\u0142atne. Pozwalaj\u0105 r\u00f3wnie\u017c oceni\u0107 skuteczno\u015b\u0107 dzia\u0142a\u0144 reklamowych (np. dzi\u0119ki zliczaniu, ile os\u00f3b klikn\u0119\u0142o w dan\u0105 reklam\u0119 i przesz\u0142o na stron\u0119 internetow\u0105 reklamodawcy).\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cem\u003E\u00a0\u003C\/em\u003E\n\n\u003Cem\u003E\u00a0\u003C\/em\u003E","date_published":"2017-04-06T22:40:48+02:00","date_modified":"2024-03-25T22:35:26+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","WWW","Design"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/praktyczny-atak-na-wi-fi-wstrzykiwanie-pakietow","url":"https:\/\/tomekkowalczyk.pl\/blog\/praktyczny-atak-na-wi-fi-wstrzykiwanie-pakietow","title":"Praktyczny atak na Wi-Fi - wstrzykiwanie pakiet\u00f3w","summary":"Z czwartego artyku\u0142u o bezpiecze\u0144stwie sieci Wi-Fi dowiesz si\u0119 czym jest tryb monitor, jak mo\u017cna pods\u0142ucha\u0107 transmisj\u0119 takiej sieci i jak wstrzykn\u0105\u0107 pakiet Deauthentication, kt\u00f3ry spowoduje od\u0142\u0105czenie wybranego klienta testowej sieci bezprzewodowej.","content_html":"\u003Ch2\u003EZ czwartego artyku\u0142u o bezpiecze\u0144stwie sieci Wi-Fi dowiesz si\u0119 czym jest tryb \u003Cem\u003Emonitor, \u003C\/em\u003Ejak mo\u017cna pods\u0142ucha\u0107 transmisj\u0119 takiej sieci i jak wstrzykn\u0105\u0107 pakiet \u003Cem\u003EDeauthentication, \u003C\/em\u003Ekt\u00f3ry spowoduje od\u0142\u0105czenie wybranego klienta testowej sieci bezprzewodowej.\u003C\/h2\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo czwarty tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat sieci bezprzewodowych Wi-Fi.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/bezpieczenstwo-sieci-wifi-wstep\/\u0022\u003EBezpiecze\u0144stwo sieci WiFi - wst\u0119p\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/sieci-wlan\/\u0022\u003ESieci WLAN struktura i opis\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/bezpieczenstwo-sieci-wi-fi\/\u0022\u003EBezpiecze\u0144stwo sieci Wi-Fi\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EPraktyczny atak - wstrzykiwanie pakiet\u00f3w\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WEP\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WPA\/WPA2\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WPS\u003C\/li\u003E\n \t\u003Cli\u003E18 z\u0142otych zasad bezpiecze\u0144stwa sieci Wi-Fi\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u00a0\u00a0 | \u003Cstrong\u003EWymaga wiedzy z artyku\u0142\u00f3w\u003C\/strong\u003E: \u003Ca href=\u0022http:\/\/egeek.pl\/bezpieczenstwo-sieci-wi-fi\/\u0022\u003E\u003Cspan style=\u0022text-decoration: underline;\u0022\u003EBezpiecze\u0144stwo sieci Wi-Fi\u003C\/span\u003E \u003C\/a\u003E| \u003Ca href=\u0022http:\/\/egeek.pl\/sieci-wlan\/\u0022\u003ESieci WLAN struktura i opis\u003C\/a\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze tematyki zabezpiecze\u0144 sieci bezprzewodowej Wi-Fi lub znaj\u0105 w mniejszym stopniu i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z zakresu bezpiecze\u0144stwa.\n\nSpis tre\u015bci:\n\u003Col\u003E\n \t\u003Cli\u003EPraktyczne wykorzystanie trybu Monitor \u2013 czyli co widzi w sieci atakuj\u0105cy\u003C\/li\u003E\n \t\u003Cli\u003Ekoncepcje zabezpieczenia sieci Wi-Fi\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003ES\u0142ownik poj\u0119\u0107\u003C\/strong\u003E\n\n\u003Cstrong\u003EKali Linux(dawniej BackTrack)\u003C\/strong\u003E \u2013 jest to dystrybucja systemu operacyjnego Linux bazuj\u0105ca na dystrybucji Debian. System przeznaczony jest g\u0142\u00f3wnie do \u0142amania zabezpiecze\u0144, wykonywania test\u00f3w penetracyjnych i audyt\u00f3w bezpiecze\u0144stwa.\n\n\u003Cstrong\u003ESniffer \u003C\/strong\u003E- program komputerowy, kt\u00f3rego zadaniem jest przechwytywanie i ewentualnie analizowanie danych przep\u0142ywaj\u0105cych w sieci.\n\u003Cstrong\u003ETryb promiscuous\u003C\/strong\u003E \u2013 tryb pracy interfejsu sieciowego kt\u00f3ry, polega na odbieraniu ca\u0142ego ruchu docieraj\u0105cego do karty sieciowej, nie tylko skierowanego na adres fizyczny karty sieciowej.\n\u003Cstrong\u003EWireshark\u003C\/strong\u003E \u2013 program sniffer, kt\u00f3ry umo\u017cliwia przechwytywanie i nagrywanie pakiet\u00f3w danych, a tak\u017ce ich dekodowanie.\n\u003Cstrong\u003ESSID\u003C\/strong\u003E - (ang.\u00a0Service Set Identifier) \u2013 identyfikator sieci sk\u0142adaj\u0105cy si\u0119 maksymalnie z 32 znak\u00f3w, dodawany do nag\u0142\u00f3wk\u00f3w pakiet\u00f3w wysy\u0142anych przez bezprzewodow\u0105 sie\u0107 WLAN.\n\u003Cstrong\u003EWEP\u003C\/strong\u003E - (ang. Wired Equivalent Privacy) standard szyfrowania stosowany w sieciach bezprzewodowych 802.11.\n\u003Cstrong\u003EWi-Fi\u003C\/strong\u003E - (ang. Wireless Fidelity) jest synonimem okre\u015blenia WLAN.\n\u003Cstrong\u003EWLAN\u003C\/strong\u003E - (ang. Wirless Local Area Network) sie\u0107 lokalna, w kt\u00f3rej po\u0142\u0105czenia mi\u0119dzy urz\u0105dzeniami sieciowymi realizuje si\u0119 bez u\u017cycia kabli.\n\u003Cstrong\u003EAP\u003C\/strong\u003E -\u00a0 (ang. Access Point) urz\u0105dzenie zapewniaj\u0105ce hostom dost\u0119p do sieci komputerowej za pomoc\u0105 bezprzewodowego no\u015bnika transmisyjnego.\n\u003Cstrong\u003ERouter - \u003C\/strong\u003Etrasownik, urz\u0105dzenie sieciowe pracuj\u0105ce w trzeciej warstwie modelu OSI. S\u0142u\u017cy do \u0142\u0105czenia r\u00f3\u017cnych sieci komputerowych.\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003E1. Praktyczne wykorzystanie trybu Monitor \u2013 czyli co widzi w sieci atakuj\u0105cy\u003C\/strong\u003E\u003C\/h3\u003E\nDo przeprowadzenia testu b\u0119dzie potrzebnych nam klika narz\u0119dzi. Laboratorium testowe na potrzeby tego artyku\u0142u by\u0142o wykonywane na dystrybucji Kali Linux, dystrybucji dedykowanej do test\u00f3w bezpiecze\u0144stwa. Posiada ona wszystkie potrzebne narz\u0119dzia preinstalowane. Ponadto Kali Linux mo\u017cna tak\u017ce uruchomi\u0107 w trybie Live, bez potrzeby instalacji na dysku. Oczywi\u015bcie mo\u017cemy system operacyjny zasymulowa\u0107 u\u017cywaj\u0105c do tego symulator\u00f3w system\u00f3w operacyjnych. Jednym z takich narz\u0119dzi jest \u003Cstrong\u003EVirtualBox\u003C\/strong\u003E jest to mened\u017cer maszyn wirtualnych, kt\u00f3ry pozwala na uruchamianie kilku system\u00f3w operacyjnych. Potrzebna b\u0119dzie nam tak\u017ce odpowiednia karta sieciowa bezprzewodowa. Dobrym dodatkiem mo\u017cne by\u0107 tak\u017ce dobra antena sieciowa. Potrzebujemy dedykowanej karty Wi-Fi, kt\u00f3ra umo\u017cliwia zmian\u0119 trybu pracy karty na tryb monitor. Nie wszystkie karty dost\u0119pne na rynku obs\u0142uguj\u0105 taki tryb pracy. Dobrym wyborem jest dedykowana karta sieciowa. Za przyk\u0142ad pos\u0142u\u017cy\u0107 mo\u017ce Karta WiFiSky 2000mw.\n\n\u003Cimg class=\u0022size-full wp-image-810 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/02\/Karta-Wifisky-egeek_pl.jpg\u0022 alt=\u0022Karta WifiSky 200mw - egeek.pl\u0022 width=\u0022390\u0022 height=\u0022300\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.1 Karta WiFiSky 2000mw (\u003Cem\u003E\u017cr\u00f3d\u0142o: www.wasserman.pl\u003C\/em\u003E)\u003C\/p\u003E\nZaczynamy prac\u0119 od pod\u0142\u0105czenia karty Wi-Fi. Domy\u015blnie karta sieciowa pracuje w trybie zwyk\u0142ym (ang. managed), w kt\u00f3rym przyjmowane s\u0105 tylko te informacje, kt\u00f3re s\u0105 przeznaczone dla danego interfejsu. Istnieje tak\u017ce tryb mieszany tzw. promiscuous, gdzie przyjmowane s\u0105 wszystkie pakiety, niezale\u017cnie od tego, czy adresowane s\u0105 do naszego, czy innego komputera w sieci. Tryb monitor pojawi\u0142 si\u0119 w sieciach bezprzewodowych dzia\u0142a on praktycznie w taki sam spos\u00f3b jak tryb promiscuous, lecz przyjmuje r\u00f3wnie\u017c informacje, kt\u00f3re nie nale\u017c\u0105 do naszej sieci. Na rysunku 3.3. przedstawiono przechwycony pakiet beacon bez po\u0142\u0105czenia si\u0119 z testow\u0105 sieci\u0105 Wireless_Lab wykorzystuj\u0105c tryb monitor karty sieciowej.\n\n\u003Cimg class=\u0022size-full wp-image-811 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/02\/Pakiet-Beacon-egeek_pl.png\u0022 alt=\u0022\u0022 width=\u00221024\u0022 height=\u0022768\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 3.3. Przechwycony pakiet Beacon pakiet rozg\u0142oszeniowy sieci Wireless_lab program Wireshark 2.2.0\u003C\/p\u003E\n\u003Cstrong\u003E3.4 Wstrzykiwanie pakiet\u00f3w do sieci\u003C\/strong\u003E\nDo sieci bezprzewodowej mo\u017cemy wstrzykn\u0105\u0107 pakiety nawet, je\u017celi nie jeste\u015bmy pod\u0142\u0105czeni bezpo\u015brednio z punktem dost\u0119powym.\n\nPakiety Deauthentication spowoduj\u0105 od\u0142\u0105czenie wszystkich klient\u00f3w sieci testowej Wireless_Lab. Efekty ataku widoczne s\u0105 na rysunku 3.4.\n\nDo ataku u\u017cy\u0142em komendy pakietu aireplay-ng:\n\naireplay-ng -0 0 -e Wireless_Lab \u2013 a xx:xx:xx:xx:xx:xx wlan0\n\n-0 \u2013 prze\u0142acznik oznaczaj\u0105cy atak cofniecia uwierzytelnienia\n0 \u2013 liczba powt\u00f3rze\u0144 (0 oznacza niesko\u0144czono\u015b\u0107)\n-e \u2013 identyfikator SSID atakowanego AP\n-a \u2013 cel ataku (wpisuj\u0105c FF:FF:FF:FF:FF:FF atakujemy ca\u0142\u0105 sie\u0107)\nwlan0 \u2013 interfejs karty sieciowej\n\n\u003Cimg class=\u0022size-full wp-image-813 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/02\/Odlaczenie-uzytkownikow-wifi-egeek_pl.jpg\u0022 alt=\u0022\u0022 width=\u00221913\u0022 height=\u0022977\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 3.4. Od\u0142\u0105czenie wszystkich klient\u00f3w z sieci Wireless_Lab \u2013 program Wireshark 2.2.0\u003C\/p\u003E\n\n\u003Ch3\u003E\u003Cstrong\u003E3.5. Uwierzytelnienie ze wsp\u00f3\u0142dzielonym kluczem\u003C\/strong\u003E\u003C\/h3\u003E\nMetoda uwierzytelnienia ze wsp\u00f3\u0142dzielonym kluczem (ang. Shared Key Authentication) wykorzystuje do uwierzytelnienia klienta znany z obu stron, poufny element. Dok\u0142adny przebieg wymiany informacji pomi\u0119dzy punktem dost\u0119powym a klientem pokazany jest na rysunek 3.6.\nKlient Punkt dost\u0119powy (PD)\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cimg class=\u0022size-full wp-image-814 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/02\/uwierzytelnienie-wifi-egeek_pl.jpg\u0022 alt=\u0022Uwierzytelnienie ze wsp\u00f3\u0142dzielonym kluczem - egeek.pl\u0022 width=\u0022508\u0022 height=\u0022230\u0022 \/\u003ERysunek 3.6. Schemat komunikacji uwierzytelnienia ze wsp\u00f3\u0142dzielonym kluczem\u003C\/p\u003E\n\n\nKlient wysy\u0142a do PD \u017c\u0105danie uwierzytelnienia. Punkt dost\u0119powy odpowiada na \u017c\u0105dnie, przesy\u0142aj\u0105c tekst \u017c\u0105danie. Klient szyfruje tekst znanym obu stron\u0105 kluczem i odsy\u0142a odpowied\u017a do PD. Punkt dost\u0119powy odszyfrowuje wiadomo\u015b\u0107 i sprawdza, czy jest zgodna z orygina\u0142em. Je\u017celi informacja jest zgodna, to klient jest poprawnie uwierzytelniony.\n\nProblem z bezpiecze\u0144stwem takiego rozwi\u0105zania polega na tym, \u017ce atakuj\u0105cy pods\u0142uchuj\u0105cy wymian\u0119 komunikat\u00f3w pomi\u0119dzy klientem a punktem dost\u0119powym i przechwytuj\u0105cy j\u0105 ma do dyspozycji przesy\u0142any otwartym tekstem komunikat wezwania jak i zaszyfrowan\u0105 odpowied\u017a. Atakuj\u0105cy mo\u017ce u\u017cy\u0107 operacji XOR do wyodr\u0119bnienia strumienia klucza. Strumie\u0144 ten mo\u017ce zosta\u0107 u\u017cyty do szyfrowania ka\u017cdego tekstu wezwania przesy\u0142anego przez AP bez konieczno\u015bci posiadania samego klucza.\n\nPrzyk\u0142adem takiej metody uwierzytelnienia ze wsp\u00f3\u0142dzielonym kluczem jest szyfrowanie WEP.\n\n\u003Cstrong\u003EPrzyk\u0142adowy scenariusz ataku ze wsp\u00f3\u0142dzielonym kluczem:\u003C\/strong\u003E\n1. Zapisujemy przechwycone pakiety na dysku komputera pomi\u0119dzy klientem a atakowan\u0105 sieci\u0105:\n\u003Ch6 style=\u0022text-align: center;\u0022\u003Eairodump-ng wlan0 \u2013c 11 \u2013bssid xx:xx:xx:xx:xx:xx \u2013w keystream\u003C\/h6\u003E\n2. Nast\u0119pnie sfa\u0142szujemy uwierzytelnienie:\n\u003Ch6 style=\u0022text-align: center;\u0022\u003Eaireplay-ng -1 0 \u2013e Wireless_Lab -y keystream.xor \u2013a xx:xx:xx:xx:xx:xx \u2013h xx:xx:xx:xx:xx:xx wlan0\u003C\/h6\u003E\nPolecenie aireplay-ng pobierze strumie\u0144 klucza i dokona pr\u00f3by uwierzytelnienia po\u0142\u0105czenia z PD.","date_published":"2017-03-27T12:14:49+02:00","date_modified":"2024-03-25T22:36:09+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/bezpieczenstwo-sieci-wi-fi","url":"https:\/\/tomekkowalczyk.pl\/blog\/bezpieczenstwo-sieci-wi-fi","title":"Bezpiecze\u0144stwo sieci Wi-Fi","summary":"Bezpiecze\u0144stwo sieci bezprzewodowej WLAN jest bardzo istotnym elementem w bezpiecze\u0144stwie IT. W zwi\u0105zku z medium takich sieci jakie s\u0105 fale radiowe, sie\u0107 taka nara\u017cona jest na ro\u017cnego typu ataki. Jest bardzo \u0142atwa w konfiguracji i powszechnie stosowana ale czy na pewno bezpieczna? Przedstawiamy obszerny artyku\u0142 na temat zabezpiecze\u0144 bezprzewodowej sieci lokalnej, w kt\u00f3rym poznasz dobre i z\u0142e techniki zabezpieczenia, dowiesz si\u0119 jak ukry\u0107 identyfikator SSID i czym jest filtrowanie adres\u00f3w MAC.","content_html":"\u003Ch2\u003EBezpiecze\u0144stwo sieci bezprzewodowej WLAN jest bardzo istotnym elementem w bezpiecze\u0144stwie IT. W zwi\u0105zku z medium takich sieci jakie s\u0105 fale radiowe, sie\u0107 taka nara\u017cona jest na ro\u017cnego typu ataki. Jest bardzo \u0142atwa w konfiguracji i powszechnie stosowana ale czy na pewno bezpieczna? Przedstawiamy obszerny artyku\u0142 na temat zabezpiecze\u0144 bezprzewodowej sieci lokalnej, w kt\u00f3rym poznasz dobre i z\u0142e techniki zabezpieczenia, dowiesz si\u0119 jak ukry\u0107 identyfikator SSID i czym jest filtrowanie adres\u00f3w MAC.\u003C\/h2\u003E\n\u003C!--more--\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo trzeci tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat sieci bezprzewodowych Wi-Fi.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/bezpieczenstwo-sieci-wifi-wstep\/\u0022\u003EBezpiecze\u0144stwo sieci WiFi - wst\u0119p\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/sieci-wlan\/\u0022\u003ESieci WLAN Struktura i opis\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EBezpiecze\u0144stwo sieci Wi-Fi\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - wstrzykiwanie pakiet\u00f3w\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WEP\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WPA\/WPA2\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WPS\u003C\/li\u003E\n \t\u003Cli\u003E18 z\u0142otych zasad bezpiecze\u0144stwa sieci Wi-Fi\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u00a0\u00a0 | \u003Cstrong\u003EWymaga wiedzy z artyku\u0142\u00f3w\u003C\/strong\u003E: \u003Ca href=\u0022http:\/\/egeek.pl\/sieci-wlan\/\u0022\u003E\u003Cspan style=\u0022text-decoration: underline;\u0022\u003ESieci WLAN Struktura i opis\u003C\/span\u003E\u003C\/a\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze koncepcji zabezpiecze\u0144 sieci bezprzewodowej Wi-Fi lub znaj\u0105 w mniejszym stopniu i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z tego zakresu.\n\nSpis tre\u015bci:\n\u003Col\u003E\n \t\u003Cli\u003EProblem wsp\u00f3\u0142dzielonego medium\u003C\/li\u003E\n \t\u003Cli\u003EKoncepcje zabezpieczenia sieci Wi-Fi\n\u003Col\u003E\n \t\u003Cli\u003ERozg\u0142aszanie sieci\u003C\/li\u003E\n \t\u003Cli\u003EFiltrowanie dost\u0119pu\u003C\/li\u003E\n \t\u003Cli\u003EIzolacja u\u017cytkownik\u00f3w\u003C\/li\u003E\n \t\u003Cli\u003ESzyfrowanie\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003ES\u0142ownik poj\u0119\u0107\u003C\/strong\u003E\n\n\u003Cstrong\u003EWi-Fi\u003C\/strong\u003E - (ang. Wireless Fidelity) jest synonimem okre\u015blenia WLAN.\u003Cstrong\u003EWLAN\u003C\/strong\u003E - (ang. Wirless Local Area Network) sie\u0107 lokalna, w kt\u00f3rej po\u0142\u0105czenia mi\u0119dzy urz\u0105dzeniami sieciowymi realizuje si\u0119 bez u\u017cycia kabli.\n\u003Cstrong\u003E\nWLAN\u003C\/strong\u003E - (ang. Wirless Local Area Network) sie\u0107 lokalna, w kt\u00f3rej po\u0142\u0105czenia mi\u0119dzy urz\u0105dzeniami sieciowymi realizuje si\u0119 bez u\u017cycia kabli.\n\n\u003Cstrong\u003EAP\u003C\/strong\u003E -\u00a0 (ang. Access Point) urz\u0105dzenie, kt\u00f3re zapewnia hostom (komputerom) dost\u0119p do sieci komputerowej za pomoc\u0105 bezprzewodowego no\u015bnika transmisyjnego.\n\n\u003Cstrong\u003ERouter - \u003C\/strong\u003Ejest to urz\u0105dzenie sieciowe, kt\u00f3re pracuje w trzeciej warstwie modelu OSI. S\u0142u\u017cy do \u0142\u0105czenia r\u00f3\u017cnych sieci komputerowych.\n\u003Cstrong\u003E\nHub\u003C\/strong\u003E \u2013 koncentrator, zadaniem urz\u0105dzenia sieciowego, jest przekazywanie sygna\u0142u z jednego portu na wszystkie pozosta\u0142e, bez sprawdzania kto jest adresatem wiadomo\u015bci.\n\n\u003Cb\u003ESwitch - \u003C\/b\u003E\u003Cb\u003Ep\u003C\/b\u003E\u003Cb\u003Erze\u0142\u0105cznik, jest to\u003C\/b\u003E urz\u0105dzenie \u0142\u0105cz\u0105ce segmenty sieci komputerowej, kt\u00f3re bazuj\u0105 g\u0142\u00f3wnie w drugiej warstwie modelu ISO\/OSI czyli \u0142\u0105cza danych. Przekazuje ramki mi\u0119dzy segmentami sieci z wyborem portu prze\u0142\u0105cznika.\n\n\u003Cstrong\u003EOSI\u003C\/strong\u003E \u2013 model dzieli proces komunikacji sieciowej na siedem oddzielnych warstw.\n\n\u003Cstrong\u003ESSID\u003C\/strong\u003E - (ang.\u00a0Service Set Identifier) \u2013 identyfikator sieci sk\u0142adaj\u0105cy si\u0119 maksymalnie z 32 znak\u00f3w, dodawany do nag\u0142\u00f3wk\u00f3w pakiet\u00f3w wysy\u0142anych przez bezprzewodow\u0105 sie\u0107 WLAN.\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003Cstrong\u003E1. Problem wsp\u00f3\u0142dzielonego medium\u003C\/strong\u003E\u003C\/h3\u003E\nNa pocz\u0105tku by\u0142y koncentratory (ang. \u003Cem\u003Ehubs\u003C\/em\u003E). Zadaniem \u003Cem\u003Ehuba\u003C\/em\u003E urz\u0105dzenia sieciowego, jest przekazywanie sygna\u0142u z jednego portu na wszystkie pozosta\u0142e, bez sprawdzania, kto jest adresatem wiadomo\u015bci. \u003Cem\u003EHub\u003C\/em\u003E obs\u0142uguje warstw\u0119 fizyczn\u0105, dzi\u0119ki kt\u00f3rej przesy\u0142ane s\u0105 impulsy energetyczne. Przy tworzeniu sieci opartej na Hub istniej mo\u017cliwo\u015b\u0107 pods\u0142uchiwania transmisji innego u\u017cytkownika. Schemat dzia\u0142ania koncentratora zosta\u0142 pokazany na rysunku 3.1.\n\n\u003Cimg class=\u0022size-full wp-image-799 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/02\/Schemat-dzialania-HUB-egeek_pl.jpg\u0022 alt=\u0022Schemat dzia\u0142\u0105nia HUB - egeek.pl\u0022 width=\u0022573\u0022 height=\u0022210\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 3.1. Schemat ilustruje dzia\u0142ania \u003Cem\u003EHuba\u003C\/em\u003E.\u003C\/p\u003E\nKolejnym urz\u0105dzeniem w drodze ewolucji jest \u003Cem\u003Eswitch\u003C\/em\u003E, jego podstawowym zadaniem jest podzia\u0142 sieci lokalnej na mniejsze fragmenty, aby ograniczy\u0107 mo\u017cliwo\u015b\u0107 powstawania kolizji i dzi\u0119ki temu zwi\u0119kszy\u0107 przepustowo\u015b\u0107 ca\u0142ej sieci. Switch dzia\u0142a w trybie \u003Cem\u003Efullduplex\u003C\/em\u003E, dzi\u0119ki czemu mo\u017cliwa jest r\u00f3wnoczesna komunikacja, ponadto generuje on mniejszy ruch a to dzi\u0119ki temu, \u017ce wie, do kogo jest wys\u0142ana informacja. W przypadku \u003Cem\u003Eswitcha\u003C\/em\u003E pakiety s\u0105 wysy\u0142ane do konkretnego odbiorcy, dzi\u0119ki czemu trudniej jest przechwyci\u0107 transmisj\u0119. Schemat dzia\u0142ania prze\u0142\u0105cznika zosta\u0142 pokazany na rysunku 3.2.\n\n\u003Cimg class=\u0022size-full wp-image-800 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/02\/schemat-dzialania-switcha-egeek_pl.jpg\u0022 alt=\u0022Schemat dzia\u0142ania Switcha - egeek.pl\u0022 width=\u0022503\u0022 height=\u0022198\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 3.2. Schemat ilustruje dzia\u0142ania \u003Cem\u003Eswitcha\u003C\/em\u003E.\u003C\/p\u003E\nNie jest to jednak rozwi\u0105zanie daj\u0105ce stuprocentowe bezpiecze\u0144stwo. Istniej\u0105 ataki, tj. \u003Cem\u003EARP poison\u003C\/em\u003E, pozwalaj\u0105ce na oszukanie prze\u0142\u0105cznika. Dlatego zacz\u0119to stosowa\u0107 VLAN (ang. Virtual Lan) pozwalaj\u0105ce na pe\u0142n\u0105 i bezpieczn\u0105 izolacj\u0119 poszczeg\u00f3lnych urz\u0105dze\u0144.\n\nW przypadku sieci LAN, stworzono wiele zabezpiecze\u0144 przed dost\u0119pem do medium, jakim jest kabel. Mo\u017cna zabezpieczy\u0107 urz\u0105dzenia, zamykaj\u0105c je w szafie, i odpowiednio poprowadzi\u0107 okablowanie. Pods\u0142uchanie informacji przez kabel jest zadaniem dosy\u0107 karko\u0142omnym i trudnym do zrealizowania, chocia\u017c mo\u017cliwym. Dane przesy\u0142ane \u015bwiat\u0142owodem znacznie trudniej pods\u0142ucha\u0107 czy te\u017c wpi\u0105\u0107 si\u0119 do samego kabla ni\u017c w wypadku skr\u0119tki wystarczy j\u0105 przeci\u0105\u0107\ni odpowiednio zarobi\u0107 ko\u0144c\u00f3wki. Pods\u0142uchiwanie \u015bwiat\u0142owodu opiera si\u0119 np. na metodzie opublikowanej metodzie w 2005 roku firmy \u003Cem\u003ENetwork Integrity Systems\u003C\/em\u003E. Polega ona na wygi\u0119ciu kabla \u015bwiat\u0142owodowego pod k\u0105tem 180 stopni. Powoduje to \u0022wyciekanie\u0022 z niego oko\u0142o 1% sygna\u0142u \u015bwietlnego przewodzonego w \u015brodku.\n\nNatomiast, w przypadku sieci Wi-Fi, brak kabli, mobilno\u015b\u0107 oraz \u0142atwo\u015b\u0107 dost\u0119pu stanowi\u0105 ich najwi\u0119ksze zalety, niestety to, co stanowi najwi\u0119ksze zalety, jest jednocze\u015bnie ich najwi\u0119ksz\u0105 wad\u0105. Zastosowanie fal radiowych oznacza wykorzystanie medium transmisyjnego, kt\u00f3re jest wsp\u00f3\u0142dzielone ze wszystkimi urz\u0105dzeniami b\u0119d\u0105cymi w ich zasi\u0119gu.\n\nOczywi\u015bcie istniej\u0105 tzw. p\u00f3\u0142\u015brodki maj\u0105ce poprawi\u0107 bezpiecze\u0144stwo sieci bezprzewodowych ograniczaj\u0105ce zasi\u0119g sieci radiowej, np. poprzez specjalistyczne farby blokuj\u0105ce fale czy \u015bciany t\u0142umi\u0105ce zasi\u0119g. Jednak musimy pami\u0119ta\u0107 o tym, \u017ce osoba chc\u0105ca dosta\u0107 si\u0119 do naszej sieci mo\u017ce u\u017cy\u0107 bardzo mocnej anteny kierunkowej i mocnej karty sieciowej skierowanej wprost na nasze pomieszczenie uzyskuj\u0105c tym samym dost\u0119p do sieci. Kiedy sami zmniejszymy moc emitowanego sygna\u0142u poprzez konfiguracje na punkcie dost\u0119pu mo\u017cemy utraci\u0107 zasi\u0119g\nw niekt\u00f3rych miejscach.\n\nU\u017cycie fal radiowych wprowadza, zatem mo\u017cliwo\u015b\u0107 przeprowadzania wielu atak\u00f3w, na kt\u00f3re dobrze przygotowane i zabezpieczone sieci LAN nie s\u0105 ju\u017c wra\u017cliwe. Sieci Wi-Fi cofn\u0119\u0142y ten obszar bezpiecze\u0144stwa do ery koncentrator\u00f3w.\n\u003Ch2\u003E\u003C\/h2\u003E\n\u003Ch3\u003E\u003Cstrong\u003E2. Koncepcje zabezpieczania sieci Wi-Fi\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cstrong\u003ESieci bezprzewodowe cz\u0119sto wykorzystuj\u0105 s\u0142abe mechanizmy uwierzytelnienia, kt\u00f3re mog\u0105 by\u0107 dosy\u0107 \u0142atwo z\u0142amane i pomini\u0119te. \u003C\/strong\u003E\n\u003Ch4\u003E\u003Cstrong\u003E\u00a0\u003C\/strong\u003E\u003C\/h4\u003E\n\u003Ch4\u003E\u003Cstrong\u003E2.1 Rozg\u0142aszanie sieci\u003C\/strong\u003E\u003C\/h4\u003E\nJednym ze sposob\u00f3w na \u201ezabezpieczenie\u201d sieci Wi-Fi jest wy\u0142\u0105czenie rozg\u0142aszania SSID przez AP. Ma to \u201ezabezpieczy\u0107\u201d przed wykryciem obecno\u015bci sieci, a atakuj\u0105cy, bez znajomo\u015bci SSID, nie m\u00f3g\u0142by si\u0119 do niej pod\u0142\u0105czy\u0107. Niestety istnieje \u003Cem\u003Esniffer\u003C\/em\u003E \u2013 aplikacja, kt\u00f3ra umo\u017cliwia pods\u0142uchiwanie ruchu sieciowego (ang. sniff). Dzi\u0119ki temu oprogramowaniu mo\u017cemy przechwyci\u0107 dowolny pakiet.\n\nW konfiguracji domy\u015blnej wszystkie punkty dost\u0119powe wysy\u0142aj\u0105 swoje identyfikatory SSID\nw ramkach rozg\u0142oszeniowych (ramki typu \u003Cem\u003EBeacon\u003C\/em\u003E). Generalnie takie rozwi\u0105zanie daje mo\u017cliwo\u015b\u0107 klientom znajduj\u0105cym si\u0119 w zasi\u0119gu na \u0142atwe wykrywanie i rozpoznawanie sieci. Ukrywanie identyfikatora SSID polega na wy\u0142\u0105czeniu w opcji konfiguracji urz\u0105dzenia sieciowego rozg\u0142oszenia nazwy identyfikatora sieci WLAN. Nazwa identyfikatora nie jest wtedy wysy\u0142ana\nw ramkach rozg\u0142oszeniowych.\n\nAby omin\u0105\u0107 takie \u201ezabezpieczenie\u201d mo\u017cemy u\u017cy\u0107 w\u0142a\u015bciwie dw\u00f3ch technik. Jedna b\u0119dzie wymaga\u0142a od nas troch\u0119 cierpliwo\u015bci natomiast druga umo\u017cliwia praktycznie w kilka sekund odkry\u0107 identyfikator takiej sieci.\n\u003Col\u003E\n \t\u003Cli\u003ETechnika pasywna \u2013 polega na oczekiwaniu, a\u017c jaki\u015b uprawniony klient pod\u0142\u0105czy si\u0119 do punktu dost\u0119powego. Takie zdarzenie spowoduje wygenerowanie pakiet\u00f3w sondowania (ang. \u003Cem\u003EProbe Request\u003C\/em\u003E) i odpowied\u017a na sondowanie, czyli (ang. \u003Cem\u003EProbe\u003C\/em\u003E \u003Cem\u003EResponse\u003C\/em\u003E), kt\u00f3ra zawiera identyfikator SSID sieci i w ten spos\u00f3b ujawnia jego obecno\u015b\u0107.\u003C\/li\u003E\n \t\u003Cli\u003ETechnika roz\u0142\u0105czenia u\u017cytkownik\u00f3w \u2013 polega na wys\u0142aniu w imieniu punktu dost\u0119powego do wszystkich stacji pakiet\u00f3w anulowania uwierzytelnienia (ang. \u003Cem\u003EDeauthentication\u003C\/em\u003E). Mo\u017cemy to zrobi\u0107 na przyk\u0142ad dzi\u0119ki pakietowi aireplay-ng wpisuj\u0105c komend\u0119:\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E\u003Cem\u003Eaireplay-ng -0 5 -e Wireless_Lab \u2013 a xx:xx:xx:xx:xx:xx wlan0\u003C\/em\u003E\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E-0 \u2013 prze\u0142acznik oznaczaj\u0105cy atak cofniecia uwierzytelnienia\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E5 \u2013 ilo\u015b\u0107 powt\u00f3rze\u0144 (0 oznacza niesko\u0144czono\u015b\u0107)\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E-e \u2013 identyfikator SSID atakowanego AP\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E-a \u2013 cel ataku (wpisuj\u0105c FF:FF:FF:FF:FF:FF atakujemy ca\u0142\u0105 sie\u0107)\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003Ewlan0 \u2013 interfejs karty sieciowej\u003C\/p\u003E\nWys\u0142anie pakiet\u00f3w \u003Cem\u003EDeauthentication\u003C\/em\u003E wymusza na wszystkich klientach roz\u0142\u0105czenie si\u0119\ni ponowne przy\u0142\u0105czenie. Kiedy uprawniony klient ponownie po\u0142\u0105czy si\u0119 do punktu dost\u0119powego zostan\u0105 wys\u0142ane pakiety \u003Cem\u003EProbe Request\u003C\/em\u003E i \u003Cem\u003EProbe Response\u003C\/em\u003E.\n\u003Ch4\u003E\u003Cstrong\u003E2.2 Filtrowanie dost\u0119pu\u003C\/strong\u003E\u003C\/h4\u003E\nCz\u0119sto stosowanym rozwi\u0105zaniem przez administrator\u00f3w w punktach dost\u0119pu jest filtrowanie adres\u00f3w MAC. Gdy pr\u00f3bujemy pod\u0142\u0105czy\u0107 si\u0119 do jakiej\u015b sieci, ale nie uzyskujemy \u017cadnej odpowiedzi, prawdopodobnie jeste\u015bmy poza zasi\u0119giem zdalnego nadajnika albo administrator w\u0142\u0105czy\u0142 w\u0142a\u015bnie filtrowanie adres\u00f3w MAC. Komunikat ze strony AP przewa\u017cnie wygl\u0105da tak:\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cem\u003EStatus code: Unspecified failure (0x0001)\u003C\/em\u003E\u003C\/p\u003E\nKa\u017cda karta sieciowa, a co za tym idzie ka\u017cde urz\u0105dzanie posiada unikalny adres sprz\u0119towy MAC. Lista uprawnionych adres\u00f3w MAC jest zarz\u0105dzana przez administratora sieci i zapisywana\nw konfiguracji punktu dost\u0119powego.\n\nFiltrowanie urz\u0105dze\u0144 polega na dost\u0119pie do AP tylko wybranych adres\u00f3w MAC. Problem jednak ponownie tkwi we wsp\u00f3\u0142dzielonym medium, poniewa\u017c adresy MAC s\u0105 publicznie widoczne\nw warstwie fizycznej komunikacji sieciowej. W zwi\u0105zku z tym, bardzo \u0142atwo pokona\u0107 to \u201ezabezpieczenie\u201d poprzez pods\u0142uchanie obecnej transmisji i wykrycie adres\u00f3w MAC urz\u0105dze\u0144, kt\u00f3re s\u0105 w stanie komunikowa\u0107 si\u0119 z AP. Nast\u0119pnie, gdy takie urz\u0105dzenie nie jest ju\u017c obecne\nw sieci, wystarczy zmieni\u0107 adres MAC swojego urz\u0105dzenia.\n\nAdres MAC jest adresem fizycznym i nie mo\u017cna go zmieni\u0107 jednak mo\u017cna zrobi\u0107 to sprz\u0119towo. Oznacza to tyle, \u017ce po wy\u0142\u0105czeniu karty od zasilania karta b\u0119dzie mia\u0142a ju\u017c pierwotny adres. Adres mo\u017cemy zmieni\u0107, np. programem \u003Cem\u003Emacchanger\u003C\/em\u003E z dystrybucji Kali Linux:\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E\u003Cem\u003Emacchanger \u2013m x:x:x:x:x:x wlan0\u003C\/em\u003E\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003E\u003Cem\u003E#:#:#:#:#:# - \u003C\/em\u003EMAC karty sieciowej na kt\u00f3ry chcemy zmieni\u0107 adres\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-3-3\u0022\u003EFiltrowanie adresu MAC jest dobrym zabezpieczeniem w sieci LAN natomiast w sieci WLAN niestety jest nieskuteczne.\u003C\/p\u003E\n\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Ch4\u003E\u003Cstrong\u003E2.3 Izolacja u\u017cytkownik\u00f3w\u003C\/strong\u003E\u003C\/h4\u003E\nIzolacja u\u017cytkownik\u00f3w sieci pomi\u0119dzy sob\u0105 tzw. \u201ewireless client isolation\u201d. Dzia\u0142a to tak, \u017ce urz\u0105dzenia ju\u017c pod\u0142\u0105czone do AP, nie mog\u0105 si\u0119 mi\u0119dzy sob\u0105 komunikowa\u0107, je\u015bli punkt dost\u0119powy im na to nie zezwoli. Dzi\u0119ki temu nie ma mo\u017cliwo\u015bci pods\u0142uchiwania transmisji.\n\nNiestety, wystarczy przestawi\u0107 swoj\u0105 kart\u0119 bezprzewodow\u0105 tak, aby odbiera\u0142a wszystkie pakiety, tzw. tryb \u003Cem\u003Emonitor,\u003C\/em\u003E i wtedy mo\u017cemy podgl\u0105da\u0107 dane innego u\u017cytkownika.\n\u003Ch4\u003E\u003Cstrong\u003E2.4 Szyfrowanie\u003C\/strong\u003E\u003C\/h4\u003E\nWsp\u00f3\u0142czesne punkty dost\u0119powe wymagaj\u0105 podania has\u0142a w celu pod\u0142\u0105czenia si\u0119 do sieci, a wszystkie dane s\u0105 nast\u0119pnie szyfrowane. Pierwszym takim mechanizmem by\u0142 WEP, kt\u00f3ry, jak si\u0119 okaza\u0142o, niestety mia\u0142 powa\u017cne wady kryptograficzne. Nast\u0119pnie wprowadzono WPA maj\u0105ce naprawi\u0107 s\u0142abo\u015b\u0107 zabezpiecze\u0144 oferowanych przez WEP. Niestety, istniej\u0105 wci\u0105\u017c praktyczne i skuteczne mo\u017cliwo\u015bci ataku na sieci zabezpieczone przez te szyfry.\n\n\u003Chr class=\u0022bs-divider large dashed-line\u0022 \/\u003E\n\u003Cp class=\u0022bs-intro\u0022\u003E\u003Ca href=\u0022http:\/\/adevo.pl\u0022\u003E\u003Cimg class=\u0022aligncenter wp-image-1043 size-full\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/adevo.jpg\u0022 alt=\u0022Adevo - Dzia\u0142amy Kreatywnie\u0022 width=\u0022851\u0022 height=\u0022315\u0022 \/\u003E\u003C\/a\u003E\u003C\/p\u003E","date_published":"2017-03-22T12:05:59+01:00","date_modified":"2024-03-25T22:39:14+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/sieci-wlan","url":"https:\/\/tomekkowalczyk.pl\/blog\/sieci-wlan","title":"Sieci WLAN struktura i opis","summary":"Zobacz jak dzia\u0142a od wewn\u0105trz sie\u0107 Wi-Fi. Poznaj struktur\u0119 sieci bezprzewodowej WLAN by lepiej zrozumie\u0107 mechanizmy przesy\u0142u danych w takiej sieci. Przedstawiamy obszerny artyku\u0142 na temat budowy bezprzewodowej sieci lokalnej, w kt\u00f3rym poznasz budow\u0119 ramki WLAN, standardy sieci a tak\u017ce podzia\u0142 zasi\u0119gu sieci bezprzewodowych i architektur\u0119.","content_html":"\u003Ch2\u003EZobacz jak dzia\u0142a od wewn\u0105trz sie\u0107 Wi-Fi. Poznaj struktur\u0119 sieci bezprzewodowej WLAN by lepiej zrozumie\u0107 mechanizmy przesy\u0142u danych w takiej sieci. Przedstawiamy obszerny artyku\u0142 na temat budowy bezprzewodowej sieci lokalnej, w kt\u00f3rym poznasz budow\u0119 ramki WLAN, standardy sieci a tak\u017ce podzia\u0142 zasi\u0119gu sieci bezprzewodowych i architektur\u0119.\u003C\/h2\u003E\n\u003C!--more--\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo drugi tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat sieci bezprzewodowych Wi-Fi.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/bezpieczenstwo-sieci-wifi-wstep\/\u0022\u003EBezpiecze\u0144stwo sieci WiFi - wst\u0119p\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003ESieci WLAN Struktura i opis\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003EBezpiecze\u0144stwo sieci Wi-Fi\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - wstrzykiwanie pakiet\u00f3w\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WEP\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WPA\/WPA2\u003C\/li\u003E\n \t\u003Cli\u003EPraktyczny atak - WPS\u003C\/li\u003E\n \t\u003Cli\u003E18 z\u0142otych zasad bezpiecze\u0144stwa sieci Wi-Fi\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u00a0\u00a0 | \u003Cstrong\u003EWymaga wiedzy z artyku\u0142\u00f3w\u003C\/strong\u003E: \u003Ca href=\u0022http:\/\/egeek.pl\/bezpieczenstwo-sieci-wifi-wstep\/\u0022\u003E\u003Cspan style=\u0022text-decoration: underline;\u0022\u003EWst\u0119p do sieci bezprzewodowych WLAN\u003C\/span\u003E\u003C\/a\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze architektury sieci bezprzewodowej Wi-Fi lub znaj\u0105 w mniejszym stopniu i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z tego zakresu.\n\nSpis tre\u015bci:\n\u003Col\u003E\n \t\u003Cli\u003ERodzaje medi\u00f3w transmisyjnych w sieciach bezprzewodowych\u003C\/li\u003E\n \t\u003Cli\u003EBudowa ramek w sieciach WLAN\u003C\/li\u003E\n \t\u003Cli\u003EStandardy sieci Wi-Fi\u003C\/li\u003E\n \t\u003Cli\u003EPodzia\u0142 zasi\u0119gu sieci bezprzewodowych\u003C\/li\u003E\n \t\u003Cli\u003EWydajno\u015b\u0107 transmisji\u003C\/li\u003E\n \t\u003Cli\u003EArchitektura sieci Wi-Fi\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003ES\u0142ownik poj\u0119\u0107\u003C\/strong\u003E\n\n\u003Cstrong\u003EWi-Fi\u003C\/strong\u003E - (ang. Wireless Fidelity) jest synonimem okre\u015blenia WLAN.\n\u003Cstrong\u003EWLAN\u003C\/strong\u003E - (ang. Wirless Local Area Network) sie\u0107 lokalna, w kt\u00f3rej po\u0142\u0105czenia mi\u0119dzy urz\u0105dzeniami sieciowymi realizuje si\u0119 bez u\u017cycia kabli.\n\u003Cstrong\u003EAP\u003C\/strong\u003E -\u00a0 (ang. Access Point) urz\u0105dzenie, kt\u00f3re zapewnia hostom (komputerom) dost\u0119p do sieci komputerowej za pomoc\u0105 bezprzewodowego no\u015bnika transmisyjnego.\n\u003Cstrong\u003ERouter - \u003C\/strong\u003Ejest to urz\u0105dzenie sieciowe, kt\u00f3re pracuje w trzeciej warstwie modelu OSI. S\u0142u\u017cy do \u0142\u0105czenia r\u00f3\u017cnych sieci komputerowych.\n\u003Cb\u003EModel OSI\u003C\/b\u003E - standard przedstawiaj\u0105cy struktur\u0119 komunikacji sieciowej. Modelu sieciowy, dzi\u0119ki kt\u00f3remu producenci mog\u0105 opracowywa\u0107 wsp\u00f3lne rozwi\u0105zania sieciowe. Modelu dzieli systemy sieciowe na 7 warstw wsp\u00f3\u0142pracuj\u0105cych ze sob\u0105 w \u015bci\u015ble okre\u015blony spos\u00f3b.\n\u003Cstrong\u003ERamka - \u003C\/strong\u003Ejest to jednostka danych przesy\u0142ana przez protok\u00f3\u0142 warstwy \u0142\u0105cza danych modelu OSI.\n\u003Cspan class=\u0022_Tgc\u0022\u003E\u003Cb\u003E802.11\u003C\/b\u003E \u2013 jest to grupa standard\u00f3w IEEE opisuj\u0105cych warstw\u0119 fizyczn\u0105 jak r\u00f3wnie\u017c podwarstw\u0119 MAC bezprzewodowych sieci lokalnych. \u003C\/span\u003E\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003E1. Rodzaje medi\u00f3w transmisyjnych w sieciach bezprzewodowych\u003C\/strong\u003E\u003C\/h3\u003E\nW sieciach bezprzewodowych standardu IEEE 802.11 wyr\u00f3\u017cniamy r\u00f3\u017cne rodzaje medi\u00f3w transmisyjnych:\n\u003Cb\u003EIEEE 802\u003C\/b\u003E - jest to grupa standard\u00f3w IEEE stosowana w lokalnych sieciach komputerowych i miejskich sieciach komputerowych przesy\u0142aj\u0105cych dane w pakietach.)\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cem\u003Eradiowe\u003C\/em\u003E - korzystaj\u0105 z fal elektromagnetycznych do przesy\u0142ania informacji mi\u0119dzy dwoma jednostkami,\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00222\u0022\u003E\n \t\u003Cli\u003E\u003Cem\u003Elaserowe\u003C\/em\u003E \u2013 medium korzysta z promieni \u015bwiat\u0142a laserowego, kt\u00f3re s\u0142u\u017c\u0105 do przenoszenia danych w powietrzu,\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00223\u0022\u003E\n \t\u003Cli\u003E\u003Cem\u003Epodczerwie\u0144\u003C\/em\u003E \u2013 medium po\u0142\u0105czenia kr\u00f3tkiego zasi\u0119gu. Zwykle wymagana jest widoczno\u015b\u0107 elementu nadawczego i odbiorczego,\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00224\u0022\u003E\n \t\u003Cli\u003E\u003Cem\u003Eultrad\u017awi\u0119ki\u003C\/em\u003E \u2013 s\u0105 u\u017cywane g\u0142\u00f3wnie w \u015brodowisku wodnym,\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00225\u0022\u003E\n \t\u003Cli\u003E\u003Cem\u003Emikrofale\u003C\/em\u003E \u2013 czyli fale o wy\u017cszej cz\u0119stotliwo\u015bci ni\u017c fale radiowe. U\u017cywane w po\u0142\u0105czeniach o charakterze radioliniowym w oparciu o skierowane na siebie anteny.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Ch2\u003E2. Budowa ramek w sieciach WLAN\u003C\/h2\u003E\nPodstawow\u0105 jednostk\u0105 informacji, jaka jest wymieniana pomi\u0119dzy stacjami w standardzie IEEE 802.11 jest ramka. Schemat budowy ramki przedstawili\u015bmy na rysunek 2.1.\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\u003Cstrong\u003EZapami\u0119taj!\n\u003C\/strong\u003E\n\u003Cstrong\u003ERamka - \u003C\/strong\u003Ejest to jednostka danych przesy\u0142ana przez protok\u00f3\u0142 warstwy \u0142\u0105cza danych modelu OSI.\u003C\/div\u003E\n\u003Cimg class=\u0022aligncenter\u0022 src=\u0022http:\/\/wisniewski.wf\/wp-content\/uploads\/2013\/12\/ramka-IEEE80211.png\u0022 alt=\u0022http:\/\/wisniewski.wf\/wp-content\/uploads\/2013\/12\/ramka-IEEE80211.png\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 2.1. Wz\u00f3r ramki zgodnej ze specyfikacj\u0105 IEEE 802.11.\n[\u0179r\u00f3d\u0142o obrazka: http:\/\/wisniewski.wf\/wp-content\/uploads\/2013\/12\/ramka-IEEE80211.png]\u003C\/p\u003E\n\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EKontrola Ramki \u003C\/strong\u003E(ang. Frame Control) Jest to 2-bitowe podpole rozpoczynaj\u0105ce ka\u017cd\u0105 ramk\u0119. Sk\u0142ada si\u0119 ono z m.in. nast\u0119puj\u0105cych element\u00f3w:\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cul\u003E\n \t\u003Cli\u003E\u003Cem\u003Eprotocol Version\u003C\/em\u003E (wersja protoko\u0142u),\u003C\/li\u003E\n \t\u003Cli\u003Epola \u003Cem\u003Etype\u003C\/em\u003E i \u003Cem\u003Esubtype\u003C\/em\u003E (typ i podtyp) \u2013 identyfikacja typu ramki,\u003C\/li\u003E\n \t\u003Cli\u003Ebity \u003Cem\u003EToDS\u003C\/em\u003E i \u003Cem\u003EFromDS\u003C\/em\u003E \u2013 wskazuj\u0105 czy ramka jest przeznaczona dla systemu dystrybucyjnego,\u003C\/li\u003E\n \t\u003Cli\u003Ebit Retry (ponowienia),\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cem\u003Ebit WEP\u003C\/em\u003E \u2013 je\u017celi ramka zosta\u0142a przetworzona przez schemat szyfrowania WEP bit ten jest ustawiony na 1\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Col start=\u00222\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EPole Duration\/ID \u003C\/strong\u003E(d\u0142ugo\u015b\u0107 trwania identyfikacji), przenosi warto\u015b\u0107 wektora alokacji sieci NAV (ang. Network Allocation Vector).\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00223\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EPola adresowe \u003C\/strong\u003EW ramce 802.11 jest do czterech 48-bitowych p\u00f3l adresowych.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cul\u003E\n \t\u003Cli\u003Eadres 1. dla odbiorcy,\u003C\/li\u003E\n \t\u003Cli\u003Eadres 2. dla nadawcy,\u003C\/li\u003E\n \t\u003Cli\u003Eadres 3. dla filtrowania przez odbiornik.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Col start=\u00224\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EPole Sequence Control \u003C\/strong\u003E(kontroli sekwencji) 16-bitowe pole kontroli sekwencji s\u0142u\u017c\u0105ce do defragmentacji oraz usuwania ramek zduplikowanych.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00225\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003ETre\u015b\u0107 ramki\u003C\/strong\u003E, czyli pole \u003Cem\u003EData\u003C\/em\u003E przenosi \u0142adunek wy\u017cszych warstw od jednej stacji do drugiej. Maksymaln\u0105 pojemno\u015b\u0107 ramki to 2304 bajt\u00f3w.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Ch2\u003E\u003Cstrong\u003E2.3 Standardy sieci Wi-Fi\u003C\/strong\u003E\u003C\/h2\u003E\nSieci bezprzewodowe opieraj\u0105 si\u0119 przede wszystkim na standardach z rodziny IEEE 802. W tej rodzinie sieci bezprzewodowych Wi-Fi dotyczy grupa standard\u00f3w IEEE 802.11.\n\u003Ch3\u003E2.3.1 \u003Cstrong\u003E802.11a\u003C\/strong\u003E\u003C\/h3\u003E\nStandard sieci Wi-Fi wprowadzony w 1999 roku. Wykorzystuje cz\u0119stotliwo\u015b\u0107 5 GHz, kana\u0142\no szeroko\u015bci 20 MHz. Pozwala na pr\u0119dko\u015b\u0107 transmisji wynosz\u0105c\u0105 do 54 Mb\/s.\nW praktyce, ze wzgl\u0119du na zarz\u0105dzanie transmisj\u0105 i kolizje, przepustowo\u015b\u0107 netto wynosi ok 20 Mb\/s.\n\u003Ch3\u003E2.3.2 \u003Cstrong\u003E802.11b\u003C\/strong\u003E\u003C\/h3\u003E\nStandard r\u00f3wnie\u017c wprowadzono w 1999 roku. Jest pierwszym rozpowszechnionym standardem na szerok\u0105 skal\u0119 g\u0142\u00f3wnie ze wzgl\u0119du na niskie koszt sprz\u0119tu. Wykorzystuje cz\u0119stotliwo\u015b\u0107 2.4 GHz, kana\u0142 o szeroko\u015bci 20 MHz i ma maksymaln\u0105 przepustowo\u015b\u0107 wynosz\u0105c\u0105 11 Mb\/s, przepustowo\u015b\u0107 netto wynosi ok 6 Mb\/s.\n\u003Ch3\u003E2.3.3 \u003Cstrong\u003E802.11g\u003C\/strong\u003E\u003C\/h3\u003E\nStandard wprowadzony w 2003 roku. Jest wstecznie kompatybilny z 802.11b. Oficjalna pr\u0119dko\u015b\u0107 wynosi 54 Mb\/s, netto 25Mb\/s. Wykorzystuje cz\u0119stotliwo\u015b\u0107 2.4 GHz, kana\u0142\no szeroko\u015bci 20 MHz.\n\u003Ch3\u003E2.3.4 \u003Cstrong\u003E802.11n\u003C\/strong\u003E\u003C\/h3\u003E\nStandard wprowadzony w 2009 roku. Wykorzystuje cz\u0119stotliwo\u015b\u0107 2.4 GHz i 5 GHz. Kana\u0142y o szeroko\u015bci 20 MHz i 40 MHz. W standardzie tym wprowadzono MIMO (ang. multiple-input multiple-output) oraz agregacj\u0119 ramek, dzi\u0119ki czemu maksymalna pr\u0119dko\u015b\u0107 transmisji wzros\u0142a nawet do 600 Mb\/s.\n\u003Ch3\u003E2.3.5 \u003Cstrong\u003E802.11ac\u003C\/strong\u003E\u003C\/h3\u003E\nStandard rozszerza maksymaln\u0105 pr\u0119dko\u015b\u0107 do 866 Mb\/s dzi\u0119ki o\u015bmiu strumieniom MIMO, u\u017cyciu tylko 5 GHz i zastosowaniu 80 MHz kana\u0142\u00f3w.\n\u003Ch2\u003E\u003Cstrong\u003E2.4 Podzia\u0142 zasi\u0119gu sieci bezprzewodowych\u003C\/strong\u003E\u003C\/h2\u003E\nPod wzgl\u0119dem zasi\u0119gu dzia\u0142ania sieci bezprzewodowych mo\u017cemy podzieli\u0107 na trzy kategorie:\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003Esieci PAN\u003C\/strong\u003E (ang. Personal Area Network ) \u2013 dzia\u0142aj\u0105 na odleg\u0142o\u015bci do 10 metr\u00f3w. Jako przyk\u0142ad tej sieci mo\u017cna poda\u0107 standard Bluetooth,\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00222\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003Esieci WLAN\u003C\/strong\u003E (ang. Wireless Local Area Network ) \u2013 dzia\u0142aj\u0105 w zakresie do 100 metr\u00f3w\nw otwartej przestrzeni,\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Col start=\u00223\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003Esieci WWAN\u003C\/strong\u003E (ang. Wireless Wide Area Network) \u2013 dzia\u0142aj\u0105 na odleg\u0142o\u015bci nawet do 5 kilometr\u00f3w. To przede wszystkim systemy sieci telefonii kom\u00f3rkowej np. GSM.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Ch2\u003E\u003Cstrong\u003E2.5 Wydajno\u015b\u0107 transmisji\u003C\/strong\u003E\u003Cstrong\u003E Wi-Fi\n\u003C\/strong\u003E\u003C\/h2\u003E\n\u003Ctable style=\u0022height: 287px;\u0022 width=\u0022732\u0022\u003E\n\u003Ctbody\u003E\n\u003Ctr\u003E\n\u003Ctd width=\u0022151\u0022\u003E\u003Cstrong\u003ENazwa standardu\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E\u003Cstrong\u003ECz\u0119stotliwo\u015b\u0107 radiowa\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E\u003Cstrong\u003EZasi\u0119g sygna\u0142u\u003C\/strong\u003E\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E\u003Cstrong\u003EMaksymalna szybko\u015b\u0107 transmisji\u003C\/strong\u003E\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd width=\u0022151\u0022\u003E802.11b\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E2.4 GHz\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E30 metr\u00f3w\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E11 Mb\/s\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd width=\u0022151\u0022\u003E802.11a\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E5 GHz\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E30 metr\u00f3w\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E54 Mb\/s\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd width=\u0022151\u0022\u003E802.11g\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E2.4 GHz\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E30 metr\u00f3w\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E54 Mb\/s\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd width=\u0022151\u0022\u003E802.11\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E2.4 GHz\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E50 metr\u00f3w\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E540 Mb\/s\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003Ctr\u003E\n\u003Ctd width=\u0022151\u0022\u003E802.15.1\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E2.4 GHz\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E10 metr\u00f3w\u003C\/td\u003E\n\u003Ctd width=\u0022151\u0022\u003E2 Mb\/s\u003C\/td\u003E\n\u003C\/tr\u003E\n\u003C\/tbody\u003E\n\u003C\/table\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 2.2. Standardy sieci bezprzewodowych\u003C\/p\u003E\n\n\nSkr\u00f3cony opis standard\u00f3w z rodziny 802.11 zosta\u0142 przedstawiony na rysunku 2.1. W sieciach Wi-Fi zachodzi degradacja si\u0142y i jako\u015bci sygna\u0142u radiowego wraz ze zwi\u0119kszaniem si\u0119 odleg\u0142o\u015bci mi\u0119dzy urz\u0105dzeniami. Mechanizm zarz\u0105dzania kolizjami b\u0119dzie powodowa\u0142 wi\u0119ksze narzuty wraz ze spadkiem jako\u015bci sygna\u0142u. Transmisja w takich sieciach okre\u015blana jest, jako \u003Cem\u003Ebest-effort\u003C\/em\u003E, oznacza to to, \u017ce niezawodno\u015b\u0107 transmisji musi by\u0107 realizowana w wy\u017cszych warstwach.\n\nZasi\u0119g w pomieszczeniu zamkni\u0119tym jest bardzo silnie zale\u017cny od rodzaju \u015bciany i przedmiot\u00f3w stoj\u0105cych na drodze sygna\u0142u. Na przyk\u0142ad \u015bciana wewn\u0119trzna o grubo\u015bci 30 cm zbudowana\nz ceg\u0142y t\u0142umi sygna\u0142 z moc\u0105 9 dB. Urz\u0105dzenia, takie jak AP b\u0119d\u0105ce w swoim zasi\u0119gu mog\u0105 si\u0119 wzajemnie zak\u0142\u00f3ca\u0107. Problem ten mo\u017ce rozwi\u0105za\u0107 automatyczne wybieranie wolnego kana\u0142u przez urz\u0105dzenie, jak r\u00f3wnie\u017c automatyczne kierowanie moc\u0105 transmisji. Mo\u017cemy te\u017c zmieni\u0107 kana\u0142 pracy sieci Wi-Fi r\u0119cznie poprzez konfiguracj\u0119 punktu dost\u0119powego. Sygna\u0142 Wi-Fi w pa\u015bmie 2.4 GHz zajmuje pi\u0119\u0107 kana\u0142\u00f3w. Wybieraj\u0105c kana\u0142u numer trzy u\u017cywamy kana\u0142\u00f3w od jeden do pi\u0119\u0107. Zatem, dopiero para kana\u0142\u00f3w r\u00f3\u017cni\u0105cych si\u0119 numerem o minimum pi\u0119\u0107 nie zachodzi na siebie. Rozwi\u0105zaniem problemu du\u017cej ilo\u015bci u\u017cytkownik\u00f3w na pa\u015bmie 2.4 GHz jest przej\u015bcie na pasmo 5 GHz. Standard 802.11n posiada r\u00f3\u017cne mechanizmy zwi\u0119kszaj\u0105ce zasi\u0119g transmisji, dzi\u0119ki czemu poprawi si\u0119 wydajno\u015b\u0107 sieci.\n\nMo\u017cna tak\u017ce optymalizowa\u0107 wydajno\u015b\u0107 sieci przy u\u017cyciu QoS (Quality of Service). Dzi\u0119ki QoS mo\u017cemy przydziela\u0107 odpowiednie zasoby okre\u015blonym u\u017cytkownikom sieci. Mo\u017cemy na przyk\u0142ad przydzieli\u0107 wi\u0119ksz\u0105 przepustowo\u015b\u0107 dla transmisji g\u0142osu czy wideo.\n\nProtoko\u0142em w sieciach Wi-Fi zapewniaj\u0105cym dost\u0119p do \u0142\u0105cza wraz ze \u015bledzeniem stanu no\u015bnika i unikaniem kolizji jest CSMA\/CA (ang. Carrier Sense Multiple Access with Collision Avoidance). Schemat dzia\u0142ania protoko\u0142u wygl\u0105da nast\u0119puj\u0105co, je\u017celi \u0142\u0105cze jest wolne to rozpoczyna si\u0119 transmisja, w innym wypadku stacja jest zobowi\u0105zana do wstrzymania transmisji do czasu zwolnienia \u0142\u0105cza.\n\u003Ch3\u003E\u003Cstrong\u003E2.6 Architektura sieci Wi-Fi\u003C\/strong\u003E\u003C\/h3\u003E\nArchitektura sieci Wi-Fi mo\u017ce bazowa\u0107 na topologiach:\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003Ead-hoc\u003C\/strong\u003E \u2013 gdzie urz\u0105dzenia kontaktuj\u0105 si\u0119 bezpo\u015brednio ze sob\u0105,\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003Emanaged\/Infrastructure\u003C\/strong\u003E \u2013 gdzie w sieci istnieje centrala zwana \u003Cem\u003EAccess Pointem\u003C\/em\u003E, z kt\u00f3rym kontaktuj\u0105 si\u0119 wszystkie urz\u0105dzenia w ramach danej sieci.\u003C\/li\u003E\n\u003C\/ol\u003E\nW przypadku, gdy istnieje potrzeba pokrycia du\u017cego obszaru stosowane s\u0105 rozwi\u0105zania:\n\u003Col\u003E\n \t\u003Cli\u003Epodpi\u0119cie ka\u017cdego AP do okablowania sieci lokalnej kablowej,\u003C\/li\u003E\n \t\u003Cli\u003EAP w tzw. trybie most (ang. Bridge). AP, kt\u00f3ry nie jest pod\u0142\u0105czony do sieci LAN, po\u015bredniczy w transmisji pomi\u0119dzy urz\u0105dzeniem ko\u0144cowym a kolejnym AP.\u003C\/li\u003E\n\u003C\/ol\u003E","date_published":"2017-03-17T14:01:02+01:00","date_modified":"2024-03-25T22:37:17+01:00","authors":[{"name":"Tomasz Kowalczyk"}]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/bezpieczenstwo-sieci-wifi-wstep","url":"https:\/\/tomekkowalczyk.pl\/blog\/bezpieczenstwo-sieci-wifi-wstep","title":"Bezpiecze\u0144stwo sieci WiFi - wst\u0119p","summary":"Chcesz pozna\u0107 bli\u017cej tajniki sieci bezprzewodowych WLAN? Interesuje Ci\u0119 tematyka zabezpieczenia takich sieci lokalnych? Przedstawiamy obszerny poradnik na temat technologii i struktury sieci Wi-Fi. W tym artykule przedstawimy og\u00f3lny zarys sieci bezprzewodowej, poznamy jej zalety i wady.","content_html":"\u003Ch2 style=\u0022box-sizing: border-box; font-family: Quicksand, sans-serif; font-size: 1.625rem; font-weight: bold; font-style: normal; line-height: 1.25; margin: 0px 0px 0.75rem; padding: 0px; vertical-align: baseline; border: 0px; outline: 0px; overflow-wrap: break-word; text-rendering: optimizelegibility; -webkit-font-smoothing: antialiased; color: #ffffff; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: #191919; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\u0022\u003EChcesz pozna\u0107 bli\u017cej tajniki sieci bezprzewodowych WLAN? Interesuje Ci\u0119 tematyka zabezpieczenia takich sieci lokalnych? Przedstawiamy obszerny poradnik na temat technologii i struktury sieci Wi-Fi. W tym artykule przedstawimy og\u00f3lny zarys sieci bezprzewodowej, poznamy jej zalety i wady.\u003C\/h2\u003E\n\u003Cstyle\u003E\/*! elementor - v3.19.0 - 28-02-2024 *\/\u003Cbr \/\u003E\n.elementor-alert{padding:15px;border-left:5px solid transparent;position:relative;text-align:left}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);padding:3px;font-size:var(--dismiss-icon-size,20px);line-height:1;background:transparent;color:var(--dismiss-icon-normal-color,inherit);border:none;cursor:pointer;transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{width:var(--dismiss-icon-size,20px);height:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert.elementor-alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.elementor-alert.elementor-alert-success{color:#3c763d;background-color:#dff0d8;border-color:#cae6be}.elementor-alert.elementor-alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#f9f0c3}.elementor-alert.elementor-alert-danger{color:#a94442;background-color:#f2dede;border-color:#e8c4c4}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}\u003C\/style\u003E\n\nSpis tre\u015bci\nTo pierwszy tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat sieci bezprzewodowych Wi-Fi.\nBezpiecze\u0144stwo sieci Wi-Fi - wst\u0119p\nSieci WLAN\nBezpiecze\u0144stwo sieci Wi-Fi\nPraktyczny atak - wstrzykiwanie pakiet\u00f3w\nPraktyczny atak - WEP\nPraktyczny atak - WPA\/WPA2\nPraktyczny atak - WPS\n18 z\u0142otych zasad bezpiecze\u0144stwa sieci Wi-Fi\n\u003Cbutton type=\u0022button\u0022\u003E\n\u00d7\nDismiss this alert.\n\u003C\/button\u003E\n\n\u003Cb\u003EPoziom trudno\u015bci:\u00a0\u003C\/b\u003E\n\n\u003Cb\u003EArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze tematyki zabezpiecze\u0144 sieci bezprzewodowej Wi-Fi lub znaj\u0105 w mniejszym stopniu i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z zakresu bezpiecze\u0144stwa.\u003C\/b\u003E\n\n\u003Cstyle\u003E\/*! elementor - v3.19.0 - 28-02-2024 *\/\u003Cbr \/\u003E\n.elementor-widget-rating{--e-rating-gap:0px;--e-rating-icon-font-size:16px;--e-rating-icon-color:#ccd6df;--e-rating-icon-marked-color:#f0ad4e;--e-rating-icon-marked-width:100%;--e-rating-justify-content:flex-start}.elementor-widget-rating .e-rating{display:flex;justify-content:var(--e-rating-justify-content)}.elementor-widget-rating .e-rating-wrapper{display:flex;justify-content:inherit;flex-direction:row;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;margin-block-end:calc(0px - var(--e-rating-gap));margin-inline-end:calc(0px - var(--e-rating-gap))}.elementor-widget-rating .e-rating .e-icon{position:relative;margin-block-end:var(--e-rating-gap);margin-inline-end:var(--e-rating-gap)}.elementor-widget-rating .e-rating .e-icon-wrapper.e-icon-marked{--e-rating-icon-color:var(--e-rating-icon-marked-color);width:var(--e-rating-icon-marked-width);position:absolute;z-index:1;height:100%;left:0;top:0;overflow:hidden}.elementor-widget-rating .e-rating .e-icon-wrapper :is(i,svg){display:flex;flex-shrink:0}.elementor-widget-rating .e-rating .e-icon-wrapper i{font-size:var(--e-rating-icon-font-size);color:var(--e-rating-icon-color)}.elementor-widget-rating .e-rating .e-icon-wrapper svg{width:auto;height:var(--e-rating-icon-font-size);fill:var(--e-rating-icon-color)}\u003C\/style\u003E\n\u003Ch2\u003EPrzedmiotem serii artyku\u0142\u00f3w jest problematyka zabezpieczenia sieci bezprzewodowych lokalnych\u00a0\u2014 \u003Cstrong style=\u0022color: #f2f2f2; font-size: 16px; text-align: var(--text-align);\u0022\u003EWLAN (ang. Wireless Local Area Network)\u003C\/strong\u003E w zastosowaniu domowym lub malej firmy. W dalszej cz\u0119\u015bci artyku\u0142u b\u0119dziemy wykorzystywa\u0107 poj\u0119cie sie\u0107 bezprzewodowa tylko w rozumieniu sieci WLAN. Sie\u0107 bezprzewodowa og\u00f3lnie to tak\u017ce np. technologia \u003Cb style=\u0022color: #f2f2f2; font-family: inherit; font-size: 16px; font-style: inherit; text-align: var(--text-align);\u0022\u003EBluetooth\u003C\/b\u003E czy IrDA.\u003C\/h2\u003E\n\u003Cstrong\u003EPoj\u0119cia takie jak Wi-Fi\u003C\/strong\u003E i WLAN b\u0119dziemy u\u017cywa\u0107 zamiennie, s\u0105 to synonimy i okre\u015blaj\u0105 bezprzewodow\u0105 sie\u0107 lokaln\u0105.\n\n\u003Cstrong\u003EZaczniemy od wyja\u015bnienia czym w og\u00f3le jest sie\u0107 komputerowa?\u003C\/strong\u003E\n\n\u003Cstrong\u003ESie\u0107 komputerowa\u003C\/strong\u003E to zbi\u00f3r komputer\u00f3w po\u0142\u0105czonych ze sob\u0105 kana\u0142ami komunikacyjnymi. Umo\u017cliwia wzajemne przekazywanie informacji oraz udost\u0119pnianie r\u00f3\u017cnych zasob\u00f3w. Aby m\u00f3wi\u0107 o poj\u0119ciu sieci, musimy mie\u0107 co najmniej dwa komputery czy urz\u0105dzenia komunikuj\u0105ce si\u0119 ze sob\u0105. Zatem sie\u0107 WLAN to rodzaj sieci komputerowej. Innym rodzajem takiej sieci jest \u003Cstrong\u003ELAN\u003C\/strong\u003E (ang. Local Area Network), czyli sie\u0107 kablowa.\nKilkana\u015bcie lat temu problemem u\u017cytkownik\u00f3w Internetu by\u0142a pr\u0119dko\u015b\u0107 przesy\u0142anych danych. W dzisiejszych czasach praktycznie ka\u017cdy w domu ma bezprzewodowy punkt dost\u0119powy do Internetu \u2014 AP (ang. Access Point). Wsp\u00f3\u0142cze\u015bnie wi\u0119kszo\u015b\u0107 urz\u0105dze\u0144 takich jak: telefony, tablety, notebooki czy konsole do gier, a nawet pralki, komunikuj\u0105 si\u0119 poprzez modu\u0142y \u003Cstrong\u003EWi-Fi (ang. Wireless Fidelity)\u003C\/strong\u003E.\nSieci WLAN stanowi\u0105 nieodzowny element infrastruktury informatycznej w ma\u0142ych firmach, dla kt\u00f3rych mobilno\u015b\u0107 i wysoka dost\u0119pno\u015b\u0107 us\u0142ug s\u0105 podstaw\u0105 do osi\u0105gania cel\u00f3w biznesowych. Cz\u0119\u015b\u0107 firm \u015bwiadomie rezygnuje jednak z takich rozwi\u0105za\u0144, poniewa\u017c boi si\u0119 zagro\u017ce\u0144 wynikaj\u0105cych z korzystania z Wi-Fi. Czasami administratorom w ma\u0142ych przedsi\u0119biorstwach brakuje umiej\u0119tno\u015bci prawid\u0142owego zabezpieczenia takich sieci.\n\n\u003Cstrong\u003ECzy s\u0142usznie administratorzy obawiaj\u0105 si\u0119 bezprzewodowego \u0142\u0105cza przesy\u0142u danych?\u003C\/strong\u003E\n\nSieci bezprzewodowe znakomicie u\u0142atwiaj\u0105 prac\u0119 i codzienne \u017cycie oraz zapewniaj\u0105 niemal nieograniczon\u0105 mobilno\u015b\u0107, korzystanie z nich jednak wi\u0105\u017ce si\u0119 z niebezpiecze\u0144stwem utraty czy pods\u0142uchania wra\u017cliwych danych. Niezabezpieczona sie\u0107 mo\u017ce by\u0107 przyczyn\u0105 wielu problem\u00f3w. Najmniejszym z nich jest wykorzystanie przepustowo\u015bci \u0142\u0105cza internetowego przez osoby nieuprawnione. K\u0142opoty zaczynaj\u0105 si\u0119, gdy osoby takie za pomoc\u0105 naszego \u0142\u0105cza z\u0142ami\u0105 prawo. W ostatnim okresie \u017ale zabezpieczone sieci bezprzewodowe by\u0142y wykorzystywane do w\u0142ama\u0144 w wielu prywatnych mieszkaniach. Nic nie\u015bwiadomi w\u0142a\u015bciciele sieci byli wykorzystywani jako s\u0142upy w dalszej cz\u0119\u015bci ataku np. na bank. Niestety sieci same w sobie nie posiadaj\u0105 zaawansowanych zabezpiecze\u0144, a przest\u0119pcy mog\u0105 liczy\u0107, \u017ce w wielu przypadkach administratorzy nie wykonali odpowiednich lub nawet \u017cadnych krok\u00f3w w celu poprawy zabezpiecze\u0144. Wi\u0119kszo\u015b\u0107 oferowanych \u201ezabezpiecze\u0144\u201d przez producent\u00f3w w tak zwanych domowych punktach dost\u0119pu do sieci daje z\u0142udne poczucie bezpiecze\u0144stwa. Dlatego warto odpowiednio zabezpieczy\u0107 sie\u0107 WLAN przed nieuprawnionym dost\u0119pem os\u00f3b z zewn\u0105trz czy to w domu, czy ma\u0142ym przedsi\u0119biorstwie.\n\n\u003Cstrong\u003ES\u0142ownik poj\u0119\u0107\u003C\/strong\u003E\n\n\u003Cstrong\u003ES\u0142up\u003C\/strong\u003E \u2013 osoba u\u017cyta przez przest\u0119pc\u00f3w podczas dokonywania oszustwa internetowego.\u003Cstrong\u003E\nSniffer \u003C\/strong\u003E- program komputerowy, kt\u00f3rego zadaniem jest przechwytywanie i ewentualnie analizowanie danych przep\u0142ywaj\u0105cych w sieci.\n\u003Cstrong\u003ESSID\u003C\/strong\u003E - (ang.\u00a0Service Set Identifier) \u2013 identyfikator sieci sk\u0142adaj\u0105cy si\u0119 maksymalnie z 32 znak\u00f3w, dodawany do nag\u0142\u00f3wk\u00f3w pakiet\u00f3w wysy\u0142anych przez bezprzewodow\u0105 sie\u0107 WLAN.\n\u003Cstrong\u003EWEP\u003C\/strong\u003E - (ang. Wired Equivalent Privacy) standard szyfrowania stosowany w sieciach bezprzewodowych 802.11.\n\u003Cstrong\u003EWi-Fi\u003C\/strong\u003E - (ang. Wireless Fidelity) jest synonimem okre\u015blenia WLAN.\n\u003Cstrong\u003EWLAN\u003C\/strong\u003E - (ang. Wirless Local Area Network) sie\u0107 lokalna, w kt\u00f3rej po\u0142\u0105czenia mi\u0119dzy urz\u0105dzeniami sieciowymi realizuje si\u0119 bez u\u017cycia kabli.\n\u003Cstrong\u003EAP\u003C\/strong\u003E -\u00a0 (ang. Access Point) urz\u0105dzenie zapewniaj\u0105ce hostom dost\u0119p do sieci komputerowej za pomoc\u0105 bezprzewodowego no\u015bnika transmisyjnego.\n\u003Cstrong\u003ERouter - \u003C\/strong\u003Etrasownik, urz\u0105dzenie sieciowe pracuj\u0105ce w trzeciej warstwie modelu OSI. S\u0142u\u017cy do \u0142\u0105czenia r\u00f3\u017cnych sieci komputerowych.\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003EWst\u0119p do sieci WLAN\u003C\/strong\u003E\u003C\/h3\u003E\nRozpowszechnion\u0105 i u standaryzowan\u0105 technologi\u0105 sieci bezprzewodowych jest Wi-Fi.\nSieci Wi-Fi spotkamy niemal wsz\u0119dzie, coraz trudniej o miejsce, w kt\u00f3rym nie b\u0119dziemy w zasi\u0119gu przynajmniej jednej z nich np. porty lotnicze, lokale gastronomiczne, centra handlowe, budynki uniwersyteckie, galerie handlowe, a nawet parki.\nBezprzewodowa sie\u0107 WLAN oparta na protokole 802.11 jest systemem komunikacji zaprojektowanym, jako uzupe\u0142nienie sieci tradycyjnej kablowej LAN. Sieci Wi-Fi maj\u0105 struktur\u0119 kom\u00f3rkow\u0105, rozumian\u0105 w sensie podzia\u0142u na obszary wytyczone przez punkty dost\u0119powe (AP). Sieci takie posiadaj\u0105 wiele zalet, s\u0105 wygodniejsze i ta\u0144sze w eksploatacji, nie wymagaj\u0105 instalacji struktury kablowej.\nS\u0105 obecnie jedn\u0105 z przoduj\u0105cych technologii bezprzewodowych. Wi-Fi wykorzystuje do transmisji danych fale radiowe o odpowiedniej cz\u0119stotliwo\u015bci. Sygna\u0142y przesy\u0142ane mog\u0105 by\u0107 przy wykorzystaniu r\u00f3\u017cnych pasm cz\u0119stotliwo\u015bci, z kt\u00f3rych obecnie najpopularniejszymi s\u0105 pasma 2,4Ghz oraz 5Ghz.\nCoraz wi\u0119ksz\u0105 popularno\u015bci\u0105 ciesz\u0105 si\u0119 te\u017c H\u003Cem\u003Eotspot-y\u003C\/em\u003E, kt\u00f3re oferuj\u0105 publiczny dost\u0119p do sieci na znacznie szerszym obszarze. \u003Cem\u003EHotspot-y\u003C\/em\u003E mo\u017cna znale\u017a\u0107 na wi\u0119kszo\u015bci lotnisk, w hotelach, restauracjach oraz w innych publicznych miejscach, gdzie przebywa znaczna ilo\u015b\u0107 os\u00f3b. Dost\u0119p do nich jest przewa\u017cnie darmowy, czasami jednak istnieje potrzeba wykupienia okre\u015blonego czasu pracy poprzez dedykowane strony internetowe lub zakup kart prepaid.\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003ECechy sieci WLAN\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Ch4\u003E\u003Cstrong\u003EZalety sieci WLAN:\n\u003C\/strong\u003E\n1. szybko\u015b\u0107 i prostota instalacji,\n2. brak okablowania,\n3. przeno\u015bno\u015b\u0107 i elastyczno\u015b\u0107:\n- mobilno\u015b\u0107 u\u017cytkownika, - dost\u0119p do zasob\u00f3w,\n4. redukcja koszt\u00f3w w czasie eksploatacji poprzez:\n- zmian\u0119 lokalizacji,\n- serwisowanie,\n5. skalowalno\u015b\u0107.\u003C\/h4\u003E\n\u003Ch4\u003E\u003Cstrong\u003EWady sieci WLAN:\n\u003C\/strong\u003E\n1. mo\u017cliwo\u015b\u0107 pods\u0142uchania transmisji,\n2. brak skutecznych technik ograniczenia zasi\u0119gu,\n3. mo\u017cliwo\u015b\u0107 zak\u0142\u00f3cenia sygna\u0142u,\n4. wymuszaj\u0105 zastosowania \u015bci\u015ble okre\u015blonej infrastruktury tworzenia po\u0142\u0105czenia.\u003C\/h4\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003EWymagany sprz\u0119t do implementacji sieci WLAN:\u003C\/strong\u003E\u003C\/h3\u003E\n1. router,\n2. karta bezprzewodowa na stacji roboczej,\n3. antena.\n\nNie mo\u017cna tak\u017ce zapomnie\u0107 o konieczno\u015bci zabezpieczenia i poprawnej konfiguracji sieci w standardzie \u003Cstrong\u003E802.11\u003C\/strong\u003E. Administrator posiada szeroki zakres mo\u017cliwych zabezpiecze\u0144, pozwalaj\u0105cych na ochron\u0119 przed niepo\u017c\u0105danymi u\u017cytkownikami spoza sieci oraz z\u0142o\u015bliwym oprogramowaniem.\nOpr\u00f3cz oczywistych zalet bezprzewodowej sieci Wi-Fi istniej\u0105 tak\u017ce wady m.in. zwi\u0119kszone (w por\u00f3wnaniu do tradycyjnych sieci lokalnych kablowych) prawdopodobie\u0144stwo dokonania ataku przez \u003Cem\u003ECrackera\u003C\/em\u003E. Przyk\u0142adowo sieci takie s\u0105 podatne na zagro\u017cenia jak fa\u0142szowanie pakiet\u00f3w (ang. packet spoofing), wstrzykiwanie pakiet\u00f3w (ang. Packet injection) czy nas\u0142uchiwanie przechwytywanie pakiet\u00f3w (ang. sniffing). Obecnie nie ma skutecznych technik obrony przed atakiem typu \u003Cstrong\u003EDOS\u003C\/strong\u003E (ang. deauthentication attack), czyli atakiem cofni\u0119cia uwierzytelnienia, \u003Cem\u003ECracker\u003C\/em\u003E wyposa\u017cony w narz\u0119dzia przeznaczone do tworzenia odpowiednio spreparowanych pakiet\u00f3w, ma mo\u017cliwo\u015b\u0107 od\u0142\u0105czenia od sieci wybranych, b\u0105d\u017a wszystkich klient\u00f3w.\n\nW standardzie sieci WLAN 802.11 pakiety zwi\u0105zane z uwierzytelnieniem, czyli pakiety zarz\u0105dzaj\u0105ce nie s\u0105 szyfrowane. Szyfrowaniu podlegaj\u0105 tylko same dane. Niestety wiele urz\u0105dze\u0144 sieciowych nadal obs\u0142uguje tylko s\u0142aby algorytm szyfruj\u0105cy \u003Cstrong\u003EWEP\u003C\/strong\u003E czy \u003Cstrong\u003EWPA\u003C\/strong\u003E. Dost\u0119pne narz\u0119dzia sieciowe pozwalaj\u0105 z\u0142ama\u0107 takie zabezpieczenia w kilkana\u015bcie minut.\n\nKonsekwencj\u0119 nieodpowiedniego zabezpieczenia sieci bezprzewodowej mog\u0105 by\u0107 r\u00f3\u017cne, poprzez utrat\u0119 poufnych danych, a\u017c do wykorzystania naszego adresu IP, np. do ataku na serwer www poczty. Ostatnim adresem \u0142\u0105cz\u0105cym si\u0119 z serwerem b\u0119dzie nasz publiczny adres IP.\n\n\u003Cstyle\u003E\/*! elementor - v3.19.0 - 28-02-2024 *\/\u003Cbr \/\u003E\nbody.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}\u003C\/style\u003E","date_published":"2017-03-13T12:00:01+01:00","date_modified":"2024-03-25T22:36:54+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/jak-sprawdzic-adres-ip-komputera-zdalnego","url":"https:\/\/tomekkowalczyk.pl\/blog\/jak-sprawdzic-adres-ip-komputera-zdalnego","title":"Jak sprawdzi\u0107 adres IP komputera zdalnego?","summary":"W dzisiejszym kr\u00f3tkim wpisie poka\u017cemy jak mo\u017cna w \u0142atwy spos\u00f3b uzyska\u0107 adres IP komputera zdalnego. Przedstawimy klika mo\u017cliwo\u015bci zdobycia takiego adresu. \u0026nbsp; Czy wiesz \u017ce? Adres IP (Internet Proto\u2026","content_html":"\u003Ch2\u003EW dzisiejszym kr\u00f3tkim wpisie poka\u017cemy jak mo\u017cna w \u0142atwy spos\u00f3b uzyska\u0107 adres IP komputera zdalnego. Przedstawimy klika mo\u017cliwo\u015bci zdobycia takiego adresu.\u003C\/h2\u003E\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003ECzy wiesz \u017ce?\u003C\/strong\u003E\n\nAdres IP (Internet Protocol) jest protoko\u0142em komunikacyjnym u\u017cywanym w \u003Cem\u003EInternecie\u003C\/em\u003E oraz sieciach lokalnych. Wyr\u00f3\u017cniamy adres IP wewn\u0119trzny i zewn\u0119trzny. W dzisiejszym wpisie interesowa\u0107 nas b\u0119dzie tylko adres zewn\u0119trzny. Zewn\u0119trzny adresy IP identyfikuje komputer lub urz\u0105dzenia sieciowe w globalnej sieci \u003Cem\u003EInternet\u003C\/em\u003E. Adres IPv4 sk\u0142ada si\u0119 z 4 liczb oddzielonych kropkami z przedzia\u0142u 0-255, np: \u003Cem\u003E123.123.123.123\u003C\/em\u003E\n\n\u003C\/div\u003E\n\u0026nbsp;\n\u003Ch3\u003E\u003Cstrong\u003ESprawdzenie IP - spos\u00f3b numer 1\u003C\/strong\u003E\u003C\/h3\u003E\nPierwszy spos\u00f3b zdobycia adresu IP komputera polega na wykorzystaniu specjalnie do tego celu przygotowanej witryny internetowej kt\u00f3ra umo\u017cliwia wygenerowanie linku przechwytuj\u0105cego adresy IP ofiary.\n\nMo\u017cemy do tego celu u\u017cy\u0107 witryny \u003Ca href=\u0022http:\/\/sniffip.com\/\u0022 rel=\u0022nofollow\u0022\u003Esniffip.com\u003C\/a\u003E\u00a0i wygenerowa\u0107 spreparowany link. Taki link podajemy ofierze. Oczywi\u015bcie ofiara musi wej\u015b\u0107 na taki link i go otworzy\u0107 w przegl\u0105darce internetowej. W ten w\u0142a\u015bnie spos\u00f3b poznamy adres IP komputera.\n\n\u003Cimg class=\u0022size-full wp-image-1015 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/Sledzenie-adresu-IP-sniffip.com_egeek.pl_.png\u0022 alt=\u0022Sledzienie adresu IP komputera -egeek.pl\u0022 width=\u00221130\u0022 height=\u0022323\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.1. Strona g\u0142\u00f3wna Sniffip\u003C\/p\u003E\nPrzejd\u017a do witryny \u003Cem\u003Esniffip\u003C\/em\u003E i polu formularza wpisz adres strony www kt\u00f3ry ma otworzy\u0107 si\u0119 ofierze kiedy kliknie w spreparowany link. Nast\u0119pnie kliknij w przycisk \u003Cem\u003EUtw\u00f3rz nowe \u015bledzenie\u003C\/em\u003E.\n\n\u003Cimg class=\u0022alignnone size-full wp-image-1018\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/panel-zarzadzania-sniffip_egeek.pl_.png\u0022 alt=\u0022Panel zarzadzania sniffip.com - egeek.pl\u0022 width=\u00221892\u0022 height=\u0022936\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERysunek 1.2. Panel zarz\u0105dzania \u003Cspan style=\u0022text-decoration: underline;\u0022\u003ESniffip\u003C\/span\u003E\u003C\/p\u003E\nW panelu zarz\u0105dzania mamy kilka sekcji. Adres zarz\u0105dzania jest to adres kt\u00f3ry b\u0119dzie nas kierowa\u0142 do panelu z przechwyconymi adresami IP. Warto go wi\u0119c sobie zapisa\u0107. Skr\u00f3cony link to link kt\u00f3ry powinni\u015bmy wys\u0142a\u0107 ofierze. W dolnej sekcji mamy tabel\u0119 z przechwyconymi adresami. Kolumny tabeli to odpowiednio adres IP komputera kt\u00f3ry wszed\u0142 na link, wersja przegl\u0105darki, data i godzina wej\u015bcia ofiary. Dodatkowo mamy mo\u017cliwo\u015b\u0107 przedstawienia adres\u00f3w IP na mapie Google.\n\n\u0026nbsp;\n\u003Ch3\u003E\u003Cstrong\u003ESprawdzanie IP \u2013 spos\u00f3b numer 2\u003C\/strong\u003E\u003C\/h3\u003E\nW drugim sposobie napiszemy prosty skrypt w j\u0119zyku PHP kt\u00f3ry zapisze wszystkie odwiedziny na stronie do pliku txt. Skrypt do detekcji adres\u00f3w IP odwiedzaj\u0105cego mo\u017ce wygl\u0105da\u0107 tak:\n\n\u0026nbsp;\n\u003Cpre class=\u0022theme:sublime-text toolbar:2 show-lang:2 show-plain:3 lang:php decode:true \u0022\u003E\u0026lt;!doctype html\u0026gt;\n\u0026lt;html\u0026gt;\n\t\u0026lt;head\u0026gt;\n\t\t\u0026lt;meta charset=\u0022UTF-8\u0022\u0026gt;\n\t\t\u0026lt;title\u0026gt;...\u0026lt;\/title\u0026gt;\n\t\u0026lt;\/head\u0026gt;\n\t\u0026lt;body\u0026gt;\n           \u0026lt;?php\n\t\t$adres_ip_ofiary = $_SERVER[\u0027REMOTE_ADDR\u0027];\n                $plikIP = fopen(\u0022nazwa_pliku.txt\u0022, \u0022a\u0022);\n                flock($plik, 2);\n                fwrite($plikIP, $adres_ip_ofiary.\u0022\\n\u0022);\n                flock($plikIP, 3);\n                fclose($plikIP);\n           ?\u0026gt;\n\t\u0026lt;\/body\u0026gt;\n\u0026lt;\/html\u0026gt;\n\u003C\/pre\u003E\n\u0026nbsp;\n\u003Cul\u003E\n \t\u003Cli\u003E\u003Cem\u003E$_SERVER[\u2018REMOTE_ADDR\u2019]\u003C\/em\u003E\u00a0 - to\u00a0zmienna \u015brodowiskowa przechowuj\u0105ca adres IP ofiary (osoby otwieraj\u0105cej stron\u0119 www).\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cem\u003Efopen(\u201cnazwa_pliku.txt\u201d, \u201ca\u201d)\u003C\/em\u003E - funkcja \u003Cem\u003Efopen\u003C\/em\u003E otwiera plik na serwerze, parametr a oznacza, \u017ce kolejny nowy wiersz b\u0119dzie dopisany na ko\u0144cu pliku tekstowego.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cem\u003Eflock($plik, 2)\u003C\/em\u003E - powoduje blokad\u0119 mo\u017cliwo\u015b\u0107 zapisu innym w\u0105tkom do tego samego pliku.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cem\u003Efwrite($plik, $adres_ip.\u201d\\n\u201d)\u003C\/em\u003E - zapisujemy do pliku txt adres IP odwiedzaj\u0105cego.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cem\u003Eflock($plik, 3) - \u003C\/em\u003Eodblokowujemy plik do zapisu.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cem\u003Efclose($plik) - \u003C\/em\u003Ezapisujemy i zamykamy plik tekstowy.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv class=\u0022code-block code-block-1\u0022\u003E\u003C\/div\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\u003Cstrong\u003ESprawdzenie IP \u2013 spos\u00f3b numer 3\u003C\/strong\u003E\u003C\/h3\u003E\nMo\u017cemy tak\u017ce sprawdzi\u0107 adres IP komputera z wiadomo\u015bci e-mail. Je\u017celi znamy adres e-mail ofiary kt\u00f3rej chcemy pozna\u0107 adres IP mo\u017cemy wys\u0142a\u0107 do niej wiadomo\u015b\u0107, a w odpowiedzi nasz\u0105 wiadomo\u015b\u0107 uzyskamy tak\u017ce adres IP komputera z kt\u00f3rego zosta\u0142a wys\u0142ana zwrotna wiadomo\u015b\u0107 poczt\u0105 elektroniczn\u0105.\n\u003Cpre class=\u0022theme:sublime-text toolbar:2 toolbar-overlay:false toolbar-hide:false toolbar-delay:false show-title:false show-lang:2 striped:false marking:false ranges:false nums-toggle:false wrap-toggle:false show-plain:3 plain-toggle:false copy:false popup:false expand-toggle:false lang:default highlight:0 decode:true\u0022\u003EReturn-Path: \u0026lt;tomek@egeek.pl\u0026gt;\nX-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on ...\nX-Spam-Level: \nDelivered-To: egeek.pl-hello@egeek.pl\nReceived: (qmail 476 invoked by uid 0000); 10 Mar 2017 16:12:10 -0000\nX-clamdmail: clamdmail 0.18a\nReceived: from 123.123.123.123 (HELO ?192.168...?) (\u0026lt;strong\u0026gt;tomek@egeek.pl@123.123.123.123\u0026lt;\/strong\u0026gt;)\n  by 321.321.321.321 with ESMTPA; 9 Mar 2017 16:12:10 -0000\nTo: hello@egeek.pl\nFrom: Tomasz Kowalczyk \u0026lt;tomek@egeek.pl\u0026gt;\nSubject: = Jak_sprawdzi\u0107 adres IP w wiadomo\u015bci e-mail - egeek.pl\nOrganization: =Adevo - Dzia\u0142amy kreatywnie=\nMessage-ID: \u0026lt;a1d2557b-8e51-8e90-...@egeek.pl\u0026gt;\nDate: Thu, 10 Mar 2017 17:12:27 +0100\nUser-Agent: Mozilla\/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko\/123...\nMIME-Version: 1.0\nContent-Type: text\/plain; charset=utf-8; format=flowed\nContent-Transfer-Encoding: 8bit\nX-Spam-Status: No, score=-8.5 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=disabled version=3.3.2\n\nTre\u015b\u0107\u0087 wiadomo\u015b\u009bci - egeek.pl\n\u003C\/pre\u003E\nZobaczmy na lini\u0119 7\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cem\u003EReceived: from 89.64... (HELO ?192.168...?) (tomek@egeek.pl@123.123.123.123)\u003C\/em\u003E\u003C\/p\u003E\nAdres IP 123.123.123.123 to adres komputera wysy\u0142aj\u0105cego czyli naszej ofiary.\n\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-danger\u0022\u003E\u003Cstrong\u003EUWAGA\n\nOtrzymany adres IP mo\u017ce by\u0107 adresem serwera po\u015brednicz\u0105cego a nie koniecznie u\u017cytkownika np. w przypadku zastosowania serwera proxy.\n\u003C\/strong\u003E\u003C\/div\u003E","date_published":"2017-03-10T09:01:12+01:00","date_modified":"2017-03-10T09:01:12+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","AI","WWW"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/haslo-a-bezpieczenstwo-informacji","url":"https:\/\/tomekkowalczyk.pl\/blog\/haslo-a-bezpieczenstwo-informacji","title":"Has\u0142o a bezpiecze\u0144stwo informacji","summary":"Jeste\u015b przekonany \u017ce Twoje has\u0142a s\u0105 wystarczaj\u0105co mocne i przechowywane w bezpiecznym miejscu? Prowadzisz firm\u0119 i chcesz zabezpieczy\u0107 swoje dane? Ten artyku\u0142 jest w\u0142a\u015bnie dla Ciebie. Ponad 40% specjal\u2026","content_html":"\u003Ch2\u003E\u003Cstrong\u003EJeste\u015b przekonany \u017ce Twoje has\u0142a s\u0105 wystarczaj\u0105co mocne i przechowywane w bezpiecznym miejscu? Prowadzisz firm\u0119 i chcesz zabezpieczy\u0107 swoje dane? Ten artyku\u0142 jest w\u0142a\u015bnie dla Ciebie. Ponad 40% specjalist\u00f3w ds. IT w firmie twierdzi \u017ce w przeci\u0105gu ostatnich trzech miesi\u0119cy dosz\u0142o do utraty danych na wskutek z\u0142ej polityki hase\u0142. Zapraszamy do lektury.\u003C\/strong\u003E\u003Cspan id=\u0022more-209\u0022\u003E\u003C\/span\u003E\u003C\/h2\u003E\n\u003C!--more--\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re chc\u0105 samodzielnie zadba\u0107 o bezpiecze\u0144stwo hase\u0142 internetowych. Nie wa\u017cne czy jeste\u015b przedsi\u0119biorc\u0105, czy zwyk\u0142ym u\u017cytkownikiem Internetu, w artykule znajdziesz ciekawe informacje, kt\u00f3re z pewno\u015bci\u0105 Ci\u0119 zainteresuj\u0105.\n\n\u003C\/div\u003E\nDu\u017ce firmy i korporacje nauczone do\u015bwiadczeniem nie tylko posiadaj\u0105 polityk\u0119 prywatno\u015bci ale jej przestrzegaj\u0105. Ma\u0142e i \u015brednie firmy maj\u0105 albo b\u0119d\u0105 mie\u0107 polityk\u0119 bezpiecze\u0144stwa. To bardzo wa\u017cny element funkcjonowania firmy.\n\n\u003Cstrong\u003EDlaczego to jest tak wa\u017cne?\u003C\/strong\u003E\nDobrze opracowana polityka bezpiecze\u0144stwa oraz przemy\u015blane procedury, kt\u00f3re pozwoli\u0142yby na zminimalizowanie ryzyka utraty wra\u017cliwych danych s\u0105 w dzisiejszych czasach niezb\u0119dne. Pomy\u015bl co by si\u0119 sta\u0142o gdyby konkurencja firmy dotar\u0142a do ca\u0142ej bazy klient\u00f3w i zacz\u0119\u0142a ich przejmowa\u0107. Dane osobowe klient\u00f3w, pracownik\u00f3w, dane finansowe, planowane projekty, strategie dzia\u0142ania firmy to cenne dane, kt\u00f3rych wyciek mo\u017ce spowodowa\u0107 nawet upadek firmy.\n\u003Ch3\u003E\u003Cstrong\u003E1. Pierwsze primo - Has\u0142a\u003C\/strong\u003E\u003C\/h3\u003E\nNajprostszym zabezpieczeniem przed dost\u0119pem do danych w sieci jest metoda zabezpieczeniem has\u0142em. Niestety, jak wskazuj\u0105 najnowsze statystyki, zar\u00f3wno osoby prywatnie, jak i zawodowo u\u017cywaj\u0105 ma\u0142o skomplikowanych hase\u0142. Zacznijmy jednak od pocz\u0105tku.\n\nPraktyk\u0105 jest aby aplikacje webowe nie przechowywa\u0142y hase\u0142 dost\u0119powych u\u017cytkownik\u00f3w w formie jawnego tekstu (\u003Cem\u003Eplain text\u003C\/em\u003E). Je\u017celi jaka\u015b nieuprawniona osoba uzyska dost\u0119p do bazy danych \u2013 posiada ona wtedy r\u00f3wnie\u017c dost\u0119p do wszystkich hase\u0142 znajduj\u0105cych si\u0119 w bazie. Dlatego w systemach IT has\u0142o przechowuje si\u0119 wynik funkcji skr\u00f3tu na ha\u015ble.\n\n\u0026nbsp;\n\u003Ch4\u003EJak przebiega proces logowania do strony www za pomoc\u0105 has\u0142a?\u003C\/h4\u003E\nPrze\u015bled\u017amy na przyk\u0142adzie popularnego serwisu spo\u0142eczno\u015bciowego Facebook.Pierwszy krok to za\u0142o\u017cenie konta na tym portalu poprzez formularz rejestracyjny. Formularz przedstawiono na Rysunku 1.1.\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cimg class=\u0022size-full wp-image-781 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/Rejestracja-facebook-egeek_pl.png\u0022 alt=\u0022\u0022 width=\u0022437\u0022 height=\u0022573\u0022 \/\u003ERys. 1.1 Formularz rejestracyjny na konto Facebook.\u003C\/p\u003E\nU\u017cytkownik przy rejestracji podaje jawnym tekstem sw\u00f3j login i swoje has\u0142o. Login pe\u0142ni rol\u0119 identyfikatora w bazie danych. Cz\u0119sto jest tak, \u017ce identyfikatorem jest adres e-mail, poniewa\u017c jest on globalnym adresem Internetowym na ca\u0142ym \u015bwiecie.\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003ECzym jest baza danych?\u003C\/strong\u003E\n\nBaza danych to uporz\u0105dkowany zbi\u00f3r informacji, zazwyczaj zorganizowany jako zestaw powi\u0105zanych ze sob\u0105 tabel. Informacje zapisane w bazie danych umo\u017cliwiaj\u0105 \u0142atwe porz\u0105dkowanie i szybkie wydobywanie danych. Przyk\u0142adem bazy danych w realnym \u015bwiecie mo\u017ce by\u0107 ksi\u0105\u017cka telefoniczna. Przyk\u0142adem bazy danych WWW jest np. baza danych MySQL.\n\n\u003C\/div\u003E\nKiedy klikniemy przycisk zarejestruj informacje z formularza rejestracyjnego zapisywane s\u0105 w\u0142a\u015bnie do bazy danych. Has\u0142o zapisywane jest w postaci kodu znak\u00f3w a nie w postaci jawnego tekstu. Tym kodem jest funkcja skr\u00f3tu.\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\nWarto\u015b\u0107 funkcji skr\u00f3tu generuje si\u0119 za pomoc\u0105 funkcji H postaci:\n\u003Ch4 style=\u0022text-align: center;\u0022\u003Eh = H(M)\u003C\/h4\u003E\ngdzie:\n\nM jest zmiennej d\u0142ugo\u015bci komunikatem,\nH(M) jest ustalonej d\u0142ugo\u015bci warto\u015bci\u0105.\n\n\u003C\/div\u003E\nPrzyk\u0142adem funkcji haszuj\u0105cych s\u0105 MD5, SHA1, SHA2. Taka funkcja haszuj\u0105ca jest nieodwracalna - przynajmniej w teorii. Czyli z kodu znak\u00f3w nie mo\u017cemy z powrotem odzyska\u0107 has\u0142a. Zabezpiecza to przed podgl\u0105dni\u0119ciem has\u0142a nawet z poziomu bazy danych przez administratora czy Intruza. Przypu\u015b\u0107my \u017ce chcieliby\u015bmy u\u017cy\u0107 funkcji skr\u00f3tu dla s\u0142owa \u0022\u003Cem\u003Eegeek\u003C\/em\u003E\u0022 - niech b\u0119dzie to nasze has\u0142o. Wykorzystamy do tego hash MD5. Zakodowany ci\u0105g znak\u00f3w b\u0119dzie wygl\u0105da\u0142 tak:\n\u003Cp style=\u0022text-align: center;\u0022\u003Ef4acb4d2b300f9e15cc4549f8b0fdec8\u003C\/p\u003E\n\n\u003Ch4\u003E\u003C\/h4\u003E\nAby wygenerowa\u0107 takie zakodowane has\u0142o mo\u017cesz u\u017cy\u0107 generatora online. W sieci jest mn\u00f3stwo tego typu narz\u0119dzi. Mo\u017ce to by\u0107 np. \u003Ca href=\u0022http:\/\/passwordsgenerator.net\/md5-hash-generator\/\u0022 rel=\u0022nofollow\u0022\u003Epasswordsgenerator.net\u003C\/a\u003E. Screen ze strony zosta\u0142 przedstawiony na Rysunku 1.2.\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cimg class=\u0022size-full wp-image-971 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/Hash_MD5_egeek.pl_.png\u0022 alt=\u0022Hash MD5 Egeek.pl\u0022 width=\u0022865\u0022 height=\u0022552\u0022 \/\u003ERys. 1.2 Formularz generowania skr\u00f3tu MD5 ze strony passwordgenerator.net\u003C\/p\u003E\n\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003ECzy wiesz \u017ce?\u003C\/strong\u003E\n\n\u003Cstrong\u003EMD5\u003C\/strong\u003E to algorytm kryptograficzny opracowany przez \u003Cem\u003ERona Rivesta\u003C\/em\u003E kt\u00f3ry jest funkcj\u0105 skr\u00f3tu. Generuje z danych dowolnej d\u0142ugo\u015bci 128-bitowy skr\u00f3t. Pami\u0119taj \u017ce w 2004 znaleziono powa\u017cn\u0105 luk\u0119 w bezpiecze\u0144stwie MD5 (kolizja danych) i funkcja obecnie nie powinna by\u0107 u\u017cywana w zastosowaniach takich jak np. podpis cyfrowy. Zamiast funkcji MD5 powinni\u015bmy stosowa\u0107 \u003Cstrong\u003ESHA-1\u003C\/strong\u003E a najlepiej \u003Cstrong\u003ESHA-2\u003C\/strong\u003E. Skr\u00f3ty 128-bitowe (MD5, MD4) s\u0105 zbyt kr\u00f3tkie, \u017ceby zabezpieczy\u0107 przed generowaniem kolizji. Dobr\u0105 praktyk\u0105 jest zastosowanie skr\u00f3t\u00f3w co najmniej 160-bitowych (SHA-0, SHA-1). Warto wspomnie\u0107 \u017ce istniej\u0105 tak\u017ce funkcje w odmianie \u003Ci\u003ESHA-256\/224\u003C\/i\u003E i \u003Ci\u003ESHA-512\/384. \u003C\/i\u003EWarto zauwa\u017cy\u0107 \u017ce najwi\u0119ksz\u0105 szybko\u015b\u0107 hashowania mo\u017cna osi\u0105gn\u0105\u0107 dla funkcji MD5, wolniejsze jest wykonanie funkcji SHA-1\/2.\n\nMD5 \u2013\u00a0 8223 miliona hashy na sekund\u0119\nSHA-1 \u2013 2852 miliona hashy na sekund\u0119\u003Ci\u003E\n\u003C\/i\u003E\n\n\u003C\/div\u003E\n\u003Ch4\u003EJak zatem sprawdzane jest has\u0142o?\u003C\/h4\u003E\nKiedy chcemy zalogowa\u0107 si\u0119 do za\u0142o\u017conego konta Facebook podajemy dwie informacje: identyfikator (np. e-mail) i has\u0142o.\n\n\u003Cimg class=\u0022size-full wp-image-780 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/Logowanie-facebook-egeek_pl.png\u0022 alt=\u0022\u0022 width=\u0022602\u0022 height=\u0022313\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003ERys. 1.3 Formularz logowania do Facebook\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003EPo przyci\u015bni\u0119ciu przycisku \u003Cem\u003EZaloguj si\u0119\u003C\/em\u003E, has\u0142o jest kodowane za pomoc\u0105 funkcji skr\u00f3tu dok\u0142adnie tej samej co przy rejestracji. Nast\u0119pnie w\u0142a\u015bnie wyliczona funkcja skr\u00f3tu jest por\u00f3wnywana z tym kodem znajduj\u0105cej si\u0119 w bazie danych. Identyfikatorem jest tutaj login. Je\u017celi obie warto\u015bci has\u0142a s\u0105 r\u00f3wne dla konkretnego loginu nast\u0119puje uwierzytelnienie u\u017cytkownika w serwisie www.\u003C\/p\u003E\n\n\u003Ch3\u003E\u003Cstrong\u003EW czym jest problem z has\u0142ami?\u003C\/strong\u003E\u003C\/h3\u003E\nJak wskazuj\u0105 badania, wi\u0119kszo\u015b\u0107 os\u00f3b u\u017cywa ma\u0142o skomplikowanych hase\u0142, kt\u00f3re bardzo \u0142atwo mo\u017cna z\u0142ama\u0107, czy nawet zgadn\u0105\u0107. Istniej mn\u00f3stwo sposob\u00f3w ataku na has\u0142o np. \u003Cem\u003Eatak s\u0142ownikowy\u003C\/em\u003E czy \u003Cem\u003Ebruteforce\u003C\/em\u003E. \u003Cb\u003EAtak s\u0142ownikowy\u003C\/b\u003E (ang.\u00a0\u003Cspan lang=\u0022en\u0022 xml:lang=\u0022en\u0022\u003Edictionary attack\u003C\/span\u003E) jest to technika u\u017cywana do si\u0142owego odgadywania hase\u0142. Atak s\u0142ownikowy bazuje na sprawdzeniu przygotowanej wcze\u015bnie bazy hase\u0142.\nW internecie mo\u017cemy znale\u017a\u0107 przyk\u0142ady listy s\u0142\u00f3w wyst\u0119puj\u0105cych w danym j\u0119zyku, albo najpopularniejsze has\u0142a u\u017cytkownik\u00f3w z danego roku. W ataku \u003Ci\u003Ebrute force\u003C\/i\u003E bada si\u0119 kolejno wszystkie kombinacje danego klucza w celu odnalezienia w\u0142a\u015bciwego wzoru. Przyk\u0142adami program\u00f3w \u0142ami\u0105cych metod\u0105 s\u0142ownikow\u0105 s\u0105 \u003Cem\u003ECain\u003C\/em\u003E oraz \u003Cem\u003EJohn the Ripper\u003C\/em\u003E. Istniej\u0105 r\u00f3wnie\u017c portale np. takie jak \u003Cem\u003ECrackStation kt\u00f3re\u003C\/em\u003E w ci\u0105gu kilku sekund odzyskaj\u0105 has\u0142a ze skr\u00f3t\u00f3w wytworzonych za pomoc\u0105 algorytm\u00f3w takich jak: md4, md5, md5, sha1, sha1, sha224, sha256, sha384, sha512.\n\n\u0026nbsp;\n\u003Ch3\u003E\u003Cstrong\u003E2. Jak si\u0119 zabezpieczy\u0107?\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003E\n\u003Ch4\u003E\u003Cstrong\u003ERegularna zmiana has\u0142a\u003C\/strong\u003E\u003C\/h4\u003E\n\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003ECz\u0119ste zmiany has\u0142a \u003Cstrong\u003Emog\u0105 mie\u0107 problem z jego zapami\u0119taniem\u003C\/strong\u003E. Dlatego cz\u0119sto u\u017cytkownicy zapisuj\u0105 has\u0142a w notatniku czy pliku tekstowym na komputerze. Niestety cz\u0119ste s\u0105 te\u017c przypadki w korporacjach gdzie comiesi\u0119czna zmiana has\u0142a powoduje i\u017c pracownicy u\u017cywaj\u0105 \u0142atwych do zapami\u0119tania hase\u0142 np. marzec2017, Kwiecie\u01442017. Je\u017celi jeste\u015b tak\u0105 osob\u0105 to mamy nadzieje \u017ce po przeczytaniu tego artyku\u0142u nie b\u0119dziesz tak robi\u0142.\u003Cimg class=\u0022size-full wp-image-783 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2017\/03\/haslo-kartka-egeek_pl.png\u0022 alt=\u0022Has\u0142o zapisane na kartce - egeek.pl\u0022 width=\u0022607\u0022 height=\u0022330\u0022 \/\u003E\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022 style=\u0022text-align: center;\u0022\u003ERys. 1.3 Zapisane has\u0142o na kartce.\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022 style=\u0022text-align: left;\u0022\u003E\u003Cstrong\u003EGdzie zapisywa\u0107 has\u0142a?\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003EOdpowiedzi\u0105\u00a0 na to pytanie s\u0105 menad\u017cery hase\u0142. Polecamy np. program desktopowy \u003Ca href=\u0022http:\/\/keepass.info\/\u0022\u003EKeePass\u003C\/a\u003E.\u003C\/p\u003E\n\n\u003Ch4 class=\u0022bs-padding-1-0\u0022\u003E2. Silne has\u0142o\u003C\/h4\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003EZapewne nie raz s\u0142ysza\u0142e\u015b komunikat: u\u017cywaj bezpiecznego has\u0142a. No tak zgadza si\u0119 ale jakie has\u0142o jest bezpieczne? co jaki\u015b czas zwi\u0119kszaj\u0105 si\u0119 wymagania dla has\u0142a uznawanego jako silne. Do \u0142amania hashy u\u017cywa si\u0119 kart graficznych, dzi\u0119ki kt\u00f3rym proces \u0142amania mo\u017cna wykona\u0107 nawet 1000 razy szybciej ni\u017c z wykorzystaniem procesor\u00f3w.\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003EHas\u0142o powinno mie\u0107 \u003Cstrong\u003Eminimum 10 znak\u00f3w\u003C\/strong\u003E. Powinno sk\u0142ada\u0107 si\u0119\u00a0 z ma\u0142ych, du\u017cych litery oraz cyfr jak r\u00f3wnie\u017c znak\u00f3w specjalnych takich jak: !@#$%^\u0026amp;*().\u003C\/p\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003EPrzyk\u0142ady dobrych hase\u0142: Al()Ksbn64*, k9lk09k%^\u0026amp;, MBV?\u0026gt;\u0026lt;*(963147\u003C\/p\u003E\n\n\u003Ch4 class=\u0022bs-padding-1-0\u0022\u003E3. Dostarczanie has\u0142a\u003C\/h4\u003E\n\u003Cp class=\u0022bs-padding-1-0\u0022\u003EPami\u0119taj aby nie przesy\u0142a\u0107 nikomu danych dost\u0119powych jawnym tekstem drog\u0105 elektroniczn\u0105 poprzez chat, email itd. Zanim wiadomo\u015b\u0107 trafi do odbiorcy przechodzi przez co najmniej kilka serwer\u00f3w. Po drugie nie masz nigdy pewno\u015bci kto otworzy wiadomo\u015b\u0107 po drugiej stronie. Skorzystaj wi\u0119c z szyfrowania wiadomo\u015bci. Je\u017celi koniecznie musisz wys\u0142a\u0107 wiadomo\u015b\u0107 z has\u0142em to u\u017cyj dw\u00f3ch form komunikacji. Wy\u015blij SMS-em has\u0142o a login droga e-mail.\u003C\/p\u003E\n\u0026nbsp;","date_published":"2017-03-07T13:30:54+01:00","date_modified":"2017-03-07T13:30:54+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/jak-zainstalowac-certyfikat-ssl","url":"https:\/\/tomekkowalczyk.pl\/blog\/jak-zainstalowac-certyfikat-ssl","title":"Jak zainstalowa\u0107 certyfikat SSL?","summary":"Mia\u0142e\u015b okazj\u0119 instalowa\u0107 ju\u017c certyfikat SSL na stronie www? Je\u017celi nie, to \u015bwietnie trafi\u0142e\u015b!\u00a0 Poni\u017cej poprowadz\u0119 Ci\u0119 krok po kroku jak to naj\u0142atwiej zrobi\u0107. Je\u015bli jednak instalacj\u0119 certyfikatu SSL ma\u2026","content_html":"\u003Ch2\u003EMia\u0142e\u015b okazj\u0119 instalowa\u0107 ju\u017c certyfikat SSL na stronie www? Je\u017celi nie, to \u015bwietnie trafi\u0142e\u015b!\u00a0 Poni\u017cej poprowadz\u0119 Ci\u0119 krok po kroku jak to naj\u0142atwiej zrobi\u0107. Je\u015bli jednak instalacj\u0119 certyfikatu SSL masz ju\u017c za sob\u0105, gwarantuj\u0119, \u017ce tak\u017ce znajdziesz w tym artykule wiele ciekawostek. Pami\u0119taj, \u017ce instalacja certyfikatu nie jest spraw\u0105 trudn\u0105. Wystarczy jedynie poprawnie przej\u015b\u0107 przez wszystkie kroki instalacji. Gotowy? Zaczynamy!\u003C\/h2\u003E\n\u003C!--more--\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo ju\u017c ostatni tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat Certyfikatu SSL.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003ECzym jest certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/jaki-wybrac-certyfikat-ssl-na-strone-www\/\u0022\u003EJaki wybra\u0107 certyfikat SSL na stron\u0119 www?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/co-to-jest-certyfikat-multidomain-ssl\/\u0022\u003ECo to jest certyfikat Multidomain SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/co-to-jest-certyfikat-multi-wildcard-ssl\/\u0022\u003ECo to jest certyfikat Multi Wildcard SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/co-to-jest-certyfikat-ssl-wildcard\/\u0022\u003ECo to jest certyfikat SSL Wildcard?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/jak-zamowic-certyfikat-ssl-na-strone-www\/\u0022\u003EJak zam\u00f3wi\u0107 certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EJak zainstalowa\u0107 certyfikat SSL?\u003C\/strong\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re chc\u0105 samodzielnie zainstalowa\u0107 certyfikat SSL i zapozna\u0142y si\u0119 z wcze\u015bniejszymi artyku\u0142ami z serii SSL.\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003Cstrong\u003ECo b\u0119dzie na potrzebne do instalacji certyfikatu SSL?\u003C\/strong\u003E\u003Cstrong\u003E\n\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EKlucz z certyfikatem \u003C\/strong\u003E- Je\u015bli wa\u017cno\u015b\u0107 certyfikatu, kt\u00f3ry chcesz zainstalowa\u0107 nie rozpocz\u0119\u0142a si\u0119, to b\u0119dziesz musia\u0142 zaczeka\u0107 z instalacj\u0105 do dnia, w kt\u00f3rym certyfikat jest ju\u017c wa\u017cny.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EKlucz prywatny \u003C\/strong\u003E- tworzy\u0142e\u015b podczas generowania kodu CSR.\u003Cstrong\u003E\n\u003C\/strong\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-warning\u0022\u003E\n\n\u003Cstrong\u003EUWAGA!\u003C\/strong\u003E\n\nJe\u015bli \u003Cstrong\u003Eklucz prywatny\u003C\/strong\u003E nie jest zgodny z Twoim Certyfikatem, upewnij si\u0119, \u017ce wybra\u0142e\u015b odpowiedni plik b\u0105d\u017a skontaktuj si\u0119 z Twoim providerem certyfikatu SSL.\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003Cstrong\u003EDodawanie nowego certyfikatu\n\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003EZaloguj si\u0119 do zaplecza Hostingu\/Serwera\u003C\/li\u003E\n \t\u003Cli\u003ENast\u0119pnie przejd\u017a do zak\u0142adki Dodaj certyfikat SSL\u003C\/li\u003E\n \t\u003Cli\u003EUzupe\u0142nij plik z certyfikatem i plik z kluczem prywatnym\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E\u003Cimg class=\u0022size-full wp-image-656 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2016\/11\/Dodaj-nowy-certyfikat-adevo_pl.png\u0022 alt=\u0022Dodaj nowy certyfikat SSL na stron\u0119 www\u0022 width=\u00221070\u0022 height=\u0022276\u0022 \/\u003E1.1 Przyk\u0142adowy panel dodawania certyfikatu\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003EDodatkowo skonfiguruj ustawienia w zale\u017cno\u015bci od preferencji\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003E\u003Cimg class=\u0022size-full wp-image-657 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2016\/11\/preferencje-certyfikat-SS-adevo_pl.png\u0022 alt=\u0022\u0022 width=\u0022695\u0022 height=\u0022182\u0022 \/\u003E\u003C\/p\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E1.2 Konfiguracja opcji certyfikatu SSL\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003ECa\u0142y proces powinien zako\u0144czy\u0107 si\u0119 informacj\u0105 i\u017c certyfikat zosta\u0142 dodany poprawnie. Je\u017celi masz problem z instalacj\u0105 pami\u0119taj \u017ce zawsze mo\u017cesz zg\u0142osi\u0107 problem do swojego operatora Hostingu.\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003E\u003C\/p\u003E","date_published":"2017-02-24T10:00:23+01:00","date_modified":"2017-02-24T10:00:23+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/jak-zamowic-certyfikat-ssl-na-strone-www","url":"https:\/\/tomekkowalczyk.pl\/blog\/jak-zamowic-certyfikat-ssl-na-strone-www","title":"Jak zam\u00f3wi\u0107 certyfikat SSL na stron\u0119 www?","summary":"Nie wiesz jak zam\u00f3wi\u0107 certyfikat SSL dla strony www? Nie masz poj\u0119cia co oznacza CSR? Przeprowadzimy Ci\u0119 krok po kroku przez ca\u0142y proces zakupu certyfikatu. Wyja\u015bnimy wszystkie\u00a0 kwestie i w\u0105tpliwo\u015bci \u2026","content_html":"\u003Ch2\u003ENie wiesz jak zam\u00f3wi\u0107 certyfikat SSL dla strony www? Nie masz poj\u0119cia co oznacza CSR? Przeprowadzimy Ci\u0119 krok po kroku przez ca\u0142y proces zakupu certyfikatu. Wyja\u015bnimy wszystkie\u00a0 kwestie i w\u0105tpliwo\u015bci a to wszystko w tym artykule. Mi\u0142ego czytania.\u003C\/h2\u003E\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo sz\u00f3sty tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat Certyfikatu SSL.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/czym-jest-certyfikat-ssl\/\u0022\u003ECzym jest certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/jaki-wybrac-certyfikat-ssl-na-strone-www\/\u0022\u003EJaki wybra\u0107 certyfikat SSL na stron\u0119 www?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/co-to-jest-certyfikat-multidomain-ssl\/\u0022\u003ECo to jest certyfikat Multidomain SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/co-to-jest-certyfikat-multi-wildcard-ssl\/\u0022\u003ECo to jest certyfikat Multi Wildcard SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/co-to-jest-certyfikat-ssl-wildcard\/\u0022\u003ECo to jest certyfikat SSL Wildcard?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EJak zam\u00f3wi\u0107 certyfikat SSL?\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/jak-zainstalowac-certyfikat-ssl\/\u0022\u003EJak zainstalowa\u0107 certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\n\n\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\n\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re chc\u0105 samodzielnie zam\u00f3wi\u0107 certyfikat SSL i zapozna\u0142y si\u0119 z wcze\u015bniejszymi artyku\u0142ami z serii SSL.\n\n\u003C\/div\u003E\n\u003Ch3\u003E\u003Cstrong\u003E\u00a0Co b\u0119dzie nam potrzebne do zam\u00f3wienia certyfikatu SSL?\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cstrong\u003E\u00a0\u003C\/strong\u003E\n\u003Col\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EDomena internetowa \u2013 \u003C\/strong\u003Edomena internetowa to nazwa w sieci Internet np. www.adevo.pl.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cp class=\u0022bs-padding-2-1\u0022\u003EMusisz tak\u017ce zdecydowa\u0107, jaki wariant certyfikatu Ci\u0119 interesuje:\u003C\/p\u003E\n\n\u003Cul class=\u0022bs-padding-2-1\u0022\u003E\n \t\u003Cli class=\u0022bs-padding-2-1\u0022\u003E\u003Cstrong\u003Edla jednej domeny\u003C\/strong\u003E - certyfikat tylko dla jednej domeny np. najta\u0144sz\u0105 wersj\u0119 certyfikat\u00f3w Commercial SSL, Trusted SSL czy Premium EV SSL\u003C\/li\u003E\n \t\u003Cli class=\u0022bs-padding-2-1\u0022\u003E\u003Cstrong\u003Ewildcard\u003C\/strong\u003E - t\u0105 opcj\u0119 wybierz wtedy, gdy Tw\u00f3j certyfikat b\u0119dzie obs\u0142ugiwa\u0142 domen\u0119 g\u0142\u00f3wn\u0105 oraz wszystkie jej subdomeny, np. adevo.pl, poczta.adevo.pl, panel.adevo.pl itd. Wi\u0119cej o tym typie certyfikatu dowiesz si\u0119 z ju\u017c wkr\u00f3tce z artyku\u0142\u00f3w \u003Cu\u003ECo to jest certyfikat Wildcard?\u003C\/u\u003E i artyku\u0142u \u003Cu\u003ECo to jest certyfikat Multi Wildcard SSL?\u003C\/u\u003E\u003C\/li\u003E\n \t\u003Cli class=\u0022bs-padding-2-1\u0022\u003E\u003Cstrong\u003Emultidomain\u003C\/strong\u003E - certyfikat ma zabezpiecza\u0107 kilka r\u00f3\u017cnych domen np. onet.pl i interia.pl. Wi\u0119cej o certyfikacie multidomain dowiesz si\u0119 ju\u017c niebawem z artyku\u0142u Co \u003Cu\u003Eto jest certyfikat multidomain?\u003C\/u\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Col start=\u00222\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EKod CSR - \u003C\/strong\u003Ejest to \u017c\u0105danie certyfikatu. Taki kod jest potrzebny, gdy zamawiasz certyfikat SSL dla domeny internetowej. Kod CSR ma w sobie zakodowane informacje o generowanym certyfikacie. Pami\u0119taj, \u017ce wa\u017cne jest prawid\u0142owe sporz\u0105dzenie kodu CSR, gdy\u017c jest on wysy\u0142any do instytucji wystawiaj\u0105cej taki certyfikaty SSL. Je\u017celi b\u0119dzie on b\u0142\u0119dny to wystawca nie uzna takiego kodu i nie b\u0119dzie wstanie wystawi\u0107 certyfikatu. W sieci istnieje wiele generator\u00f3w kod\u00f3w CSR gdzie uzupe\u0142niasz formularz a w odpowiedzi dostajesz klucz CSR.\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-warning\u0022\u003EPami\u0119taj r\u00f3wnie\u017c o tym, i\u017c Generator online nie mo\u017ce przechowywa\u0107 Twojego kodu CSR i klucza prywatnego. Sprawd\u017a, zatem czy istniej na stronie generatora taka informacja.\u003C\/div\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cstrong\u003E\u00a0\u003C\/strong\u003E\n\u003Col start=\u00223\u0022\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EKlucz prywatny \u2013 \u003C\/strong\u003Ejest to klucz kt\u00f3ry powinien by\u0107 wygenerowany\u00a0 i przechowywany w bezpiecznym miejscu poniewa\u017c powinien by\u0107 znany tylko Tobie.\u003C\/li\u003E\n\u003C\/ol\u003E\n\u0026nbsp;\n\u003Ch3\u003EZamawiamy Certyfikat SSL\u003C\/h3\u003E\n\u0026nbsp;\n\u003Ch4\u003E1. Wyb\u00f3r us\u0142ugodawcy SSL\u003C\/h4\u003E\nW pierwszym kroku wybieramy firm\u0119 kt\u00f3ra oferuje certyfikaty SSL. Takich firm w internecie jest naprawd\u0119 mn\u00f3stwo np. certyfikatyssl.pl, nazwa.pl, kei.pl, home.pl itd.\n\n\u003Cimg class=\u0022size-full wp-image-659 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2016\/11\/formularz-zamowienia-ceryfikatu-adevo_pl.png\u0022 alt=\u0022Formularz zam\u00f3wienia certyfikatu na przyk\u0142adzie kei.pl\u0022 width=\u0022584\u0022 height=\u0022568\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E1.1 Przyk\u0142ad formularza zam\u00f3wie\u0144 strony kei.pl\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003ENa tym etapie b\u0119dziemy potrzebowa\u0107:\u003C\/p\u003E\n\n\u003Col\u003E\n \t\u003Cli style=\u0022text-align: left;\u0022\u003EKod CSR\u003C\/li\u003E\n \t\u003Cli style=\u0022text-align: left;\u0022\u003EDost\u0119p do e-mail domeny\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Ch4\u003E2. Generowanie kodu CSR\u003C\/h4\u003E\nJedn\u0105 z metod generowania kodu CSR jest generator online. Link do jednego takiego generatora jest dost\u0119pny tutaj \u003Ca href=\u0022http:\/\/www.kei.pl\/generator-csr\u0022\u003Egenerator CSR.\u003C\/a\u003E\n\n\u003Cimg class=\u0022size-full wp-image-660 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2016\/11\/generowanie-kodu-csr-adevo_pl.png\u0022 alt=\u0022Formularz generowania kodu CSR kei.pl\u0022 width=\u00221155\u0022 height=\u0022484\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E1.1.1 Przyk\u0142adowy formularz generowania kodu CSR online kei.pl\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003EUzupe\u0142niamy wszystkie pola oznaczone gwiazdk\u0105. Je\u017celi wybierasz certyfikat typu \u003Cem\u003EWildcard\u003C\/em\u003E\u00a0 pole domena powinno wygl\u0105da\u0107 w taki spos\u00f3b \u0022*.mojastrona.pl\u0022. Kombinacja znak\u00f3w \u0022*.\u0022 przed nazw\u0105 domeny \u017ce certydikat\u00a0 SSL ma obj\u0105\u0107 domen\u0119 g\u0142\u00f3wn\u0105 i subdomeny.\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003EPo poprawnym wype\u0142nieniu wszystkich p\u00f3l dostaniemy informacj\u0119 o pobraniu dw\u00f3ch plik\u00f3w: \u003Cem\u003EKod CSR\u003C\/em\u003E i \u003Cem\u003EKlucz publiczny.\u003C\/em\u003E\u003C\/p\u003E\n\u003Cimg class=\u0022size-full wp-image-661 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2016\/11\/kod-cskod-prywatny-generator-online-adevo_pl.png\u0022 alt=\u0022\u0022 width=\u00221104\u0022 height=\u0022475\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E1.1.2 Przyk\u0142ad wygenerowanego kodu CSR i klucza prywatnego (\u003Cem\u003E\u017ar\u00f3d\u0142o www.kei.pl\u003C\/em\u003E)\u003C\/p\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003EOba klucze zapisujemy na komputerze poniewa\u017c przy instalacji b\u0119d\u0105 one niezb\u0119dne. Pami\u0119taj aby klucz prywatny przechowywa\u0107 w bezpiecznym miejscu.\u003C\/p\u003E\n\n\u003Ch4\u003E3. Potwierdzenie w\u0142asno\u015bci domeny\u003C\/h4\u003E\n\u0026nbsp;\n\nPrzed otrzymaniem samego certyfikatu musisz potwierdzi\u0107 i\u017c jeste\u015b w\u0142a\u015bcicielem domeny na kt\u00f3r\u0105 wystawiasz certyfikat. Potwierdzenie polega na u\u017cyciu linku potwierdzaj\u0105cego kt\u00f3ry b\u0119dzie wys\u0142any do Ciebie na adres kt\u00f3ry poda\u0142e\u015b podczas generowania CSR. Nazwa konto e-mail jest stricte okre\u015blona i mo\u017ce przyjmowa\u0107 nazwy:\n\u003Cp style=\u0022text-align: center;\u0022\u003Eadmin, administrator, webmaster, hostmaster oraz postmaster.\u003C\/p\u003E\n\n\u003Ch4\u003E\u003C\/h4\u003E\n\u003Ch4\u003E4. Potwierdzenie przypisania domeny do Serwera\u003Cstrong\u003E\n\u003C\/strong\u003E\u003C\/h4\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003EPotwierdzenie takie polega na dodaniu do rekordu TXT domeny do Twojego serwera\u00a0 www. Tekst jaki b\u0119dziesz musia\u0142 wpisa\u0107 b\u0119dzie dost\u0119pny w wiadomo\u015bci na g\u0142\u00f3wny autoryzowanym adresie e-mail domeny.\u003C\/p\u003E\n\u003Cimg class=\u0022size-full wp-image-662 aligncenter\u0022 src=\u0022http:\/\/egeek.pl\/assets\/uploads\/2016\/11\/Dodanie-rekordu-txt-dns_adevo_pl.png\u0022 alt=\u0022Dodanie rekordu DNS TXT \u0022 width=\u0022488\u0022 height=\u0022172\u0022 \/\u003E\n\u003Cp style=\u0022text-align: center;\u0022\u003E4.1 Formularz dodania rekordu TXT do DNS\u003C\/p\u003E\nPole \u003Cstrong\u003E\u0022Rekord\u0022\u003C\/strong\u003E zostawiamy puste natomiast w polu \u003Cstrong\u003E\u0022Warto\u015b\u0107\u003C\/strong\u003E\u0022 wpisz kod z wiadomo\u015bci e-mail. Czas \u017cycia TTL mo\u017cesz ustawi\u0107 na jak najmniejszy.\n\nPo dodaniu takiego rekordu musisz poczeka\u0107 oko\u0142o jednej godziny. Po przej\u015bciu tych wszystkich operacji na Tw\u00f3j autoryzowany adres e-mail wys\u0142any zostanie \u003Cstrong\u003ECertyfikat\u003C\/strong\u003E. Certyfikat b\u0119dzie mia\u0142 rozszerzenie \u003Cem\u003E.pem.\u003C\/em\u003E\n\nZapraszam ju\u017c wkr\u00f3tce do kolejnego artyku\u0142u gdzie poka\u017c\u0119 jak zainstalowa\u0107 Certyfikat SSL.","date_published":"2017-02-20T13:20:35+01:00","date_modified":"2017-02-20T13:20:35+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI","WWW"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/co-to-jest-certyfikat-ssl-wildcard","url":"https:\/\/tomekkowalczyk.pl\/blog\/co-to-jest-certyfikat-ssl-wildcard","title":"Co to jest certyfikat SSL Wildcard?","summary":"Poznaj szczeg\u00f3\u0142y rodzaju certyfikatu SSL jakim jest Wildcard. Zobacz czy warto kupi\u0107 i ile mo\u017ce kosztowa\u0107? \u0026nbsp; OD REDAKCJI To trzeci tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat Certyfikatu SSL. Czy\u2026","content_html":"\u003Ch2\u003E\u003Cstrong\u003EPoznaj szczeg\u00f3\u0142y rodzaju certyfikatu SSL jakim jest Wildcard. Zobacz czy warto kupi\u0107 i ile mo\u017ce kosztowa\u0107?\n\u003C\/strong\u003E\u003C\/h2\u003E\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo trzeci tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat Certyfikatu SSL.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003E\u003Cstrong\u003ECzym jest certyfikat SSL?\u003C\/strong\u003E\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/jaki-certyfikat-ssl-wybrac-na-www\/\u0022\u003EJaki wybra\u0107 certyfikat SSL na stron\u0119 www?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/co-to-jest-certyfikat-multidomain-ssl\/\u0022\u003ECo to jest certyfikat Multidomain SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/co-to-jest-certyfikat-multi-wildcard-ssl\/\u0022\u003ECo to jest certyfikat Multi Wildcard SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003ECo to jest certyfikat SSL Wildcard?\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/jak-zamowic-certyfikat-ssl-na-strone-www\/\u0022\u003EJak zam\u00f3wi\u0107 certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/jak-zainstalowac-certyfikat-ssl\/\u0022\u003EJak zainstalowa\u0107 certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\nArtyku\u0142 wymaga podstawowych informacji\u00a0 na temat certyfikatu SSL. Je\u017celi jeszcze nie zapozna\u0142e\u015b si\u0119 z artyku\u0142em wst\u0119pnym to zapraszamy do lektury \u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003E\u003Cstrong\u003ECzym jest certyfikat SSL?\u003C\/strong\u003E\u003C\/a\u003E\n\nCertyfikat SSL szyfruje komunikacj\u0119 pomi\u0119dzy przegl\u0105dark\u0105 internetow\u0105 a serwisem internetowym np. sklepem on-line. Dzi\u0119ki temu masz pewno\u015b\u0107, \u017ce przesy\u0142ane dane s\u0105 bezpieczne. Certyfikat SSL jest wi\u0119c gwarantem zachowania poufno\u015bci danych. Ponadto gwarancja jest udzielana przez niezale\u017cny podmiot, czyli wystawc\u0119. Certyfikat mo\u017cemy podzieli\u0107 w\u0142a\u015bciwie na cztery typy w zale\u017cno\u015bci od zakresu ochrony. Wyr\u00f3\u017cniamy certyfikat zwyk\u0142y SSL, SSL Wildcard, Multi Wildcard i Multidomain.\n\n\u0026nbsp;\n\n\u003Cstrong\u003ECertyfikat SSL Wildcard jest\u003C\/strong\u003E to rodzaj certyfikatu, kt\u00f3ry pozwala zabezpieczy\u0107 dowoln\u0105 liczb\u0119 subdomen pierwszego stopnia w obr\u0119bie danej domeny. Jest to rozwi\u0105zanie kt\u00f3re dedykowane jest przede wszystkim firm\u0105. W ramach strony g\u0142\u00f3wnej, mo\u017cna zabezpiecza\u0107 dodatkowe us\u0142ugi, produkty, kt\u00f3re posiadaj\u0105 w\u0142asn\u0105 subdomen\u0119.\n\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-warning\u0022\u003E\n\n\u003Cstrong\u003ECzy wiesz \u017ce?\u003C\/strong\u003E\n\nDomena to niepowtarzalny adres internetowy np. strona-firmowa.pl. Nazwy domen wraz z rozszerzeniami, rejestrowane s\u0105 przez krajowych lub mi\u0119dzynarodowych operator\u00f3w.\n\n\u003Cstrong\u003ESubdomena\u003C\/strong\u003E to adres utworzony w ramach domeny g\u0142\u00f3wnej. Najcz\u0119\u015bciej subdomeny tworzy si\u0119 w celu wydzielenia podstron lub konkretnych dzia\u0142\u00f3w. Przyk\u0142adowo blog.moja-firma.pl.\n\n\u003C\/div\u003E\n\u0026nbsp;\n\nPrzyk\u0142adowo, \u003Cstrong\u003Ecertyfikat SSL Wildcard\u003C\/strong\u003E pozwala zabezpieczy\u0107 stron\u0119 g\u0142\u00f3wn\u0105, powiedzmy niech b\u0119dzie to adres moja-firma.pl oraz strony oddzia\u0142\u00f3w lokalnych utworzone w subdomenach (np. krakow.moja-firma.pl, warszawa.moja-firma.pl, gdynia.moja-firma.pl).\n\n\u003Cstrong\u003EG\u0142\u00f3wne zalety Certyfikatu SSL Wildcard to\u003C\/strong\u003E:\n\u003Cul\u003E\n \t\u003Cli\u003E\u003Cstrong\u003E\u0141atwe zarz\u0105dzanie\u003C\/strong\u003E \u2013 jeden certyfikat chroni domen\u0119 g\u0142\u00f3wn\u0105 i wszystkie subdomeny.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EJeden adres IP\u003C\/strong\u003E \u2013 do ochrony stron dzia\u0142aj\u0105cych w subdomenach.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EOptymalizacja koszt\u00f3w\u003C\/strong\u003E \u2013 jeden certyfikat SSL Wildcard chroni kilka subdomen, mniejszy wydatek ni\u017c kilka najta\u0144szych opcji certyfikatu.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u0026nbsp;\n\u003Ch3\u003ECo daje nam taki certyfikat Wildcard?:\u003C\/h3\u003E\n\u003Cul\u003E\n \t\u003Cli\u003Ezabezpieczenie przys\u0142anych danych pomi\u0119dzy przegl\u0105dark\u0105 internetow\u0105 a serwerem,\u003C\/li\u003E\n \t\u003Cli\u003Euwierzytelnienie w\u0142a\u015bciciela i nazwy domeny,\u003C\/li\u003E\n \t\u003Cli\u003Emo\u017cliwo\u015b\u0107 zastosowania certyfikatu dla wielu podstron w ramach jednej domeny.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u003Ch3\u003ECertyfikaty Wildcard r\u00f3\u017cni\u0105 si\u0119 od siebie\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003Ezakresem walidacji,\u003C\/li\u003E\n \t\u003Cli\u003Ed\u0142ugo\u015bci\u0105 klucza szyfrowania\u003C\/li\u003E\n\u003C\/ol\u003E\n\u0026nbsp;\n\nCena certyfikatu zaczyna si\u0119 mniej wi\u0119cej od 340z\u0142 brutto a w wersji najbogatszej przeznaczonej do du\u017cych sklep\u00f3w i urz\u0119d\u00f3w nawet koszt mo\u017ce wynie\u015b\u0107 nawet 1300z\u0142 brutto.\n\u003Cp style=\u0022text-align: left;\u0022\u003E\u003C\/p\u003E","date_published":"2017-02-15T15:33:42+01:00","date_modified":"2017-02-15T15:33:42+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI","WWW"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/mapa-atakow-na-strony-internetowe","url":"https:\/\/tomekkowalczyk.pl\/blog\/mapa-atakow-na-strony-internetowe","title":"Mapa atak\u00f3w na strony internetowe","summary":"Interesujesz si\u0119 cyberbezpiecze\u0144stwem? Prowadzisz stron\u0119 www? Mamy co\u015b dla Ciebie - mapa atak\u00f3w stron internetowych online. \u0026nbsp; Praktycznie w ka\u017cdej sekundzie dochodzi do kilku tysi\u0119cy atak\u00f3w na \u015bw\u2026","content_html":"\u003Ch2\u003EInteresujesz si\u0119 cyberbezpiecze\u0144stwem? Prowadzisz stron\u0119 www? Mamy co\u015b dla Ciebie - mapa atak\u00f3w stron internetowych online.\u003C\/h2\u003E\n\u0026nbsp;\n\nPraktycznie w ka\u017cdej sekundzie dochodzi do kilku tysi\u0119cy atak\u00f3w na \u015bwiecie na strony internetowe. Dzi\u0119ki map\u0105 atak\u00f3w online mo\u017cna na bie\u017c\u0105co \u015bledzi\u0107, z jakich region\u00f3w kraju i \u015bwiata ataki s\u0105 przeprowadzane i w kogo s\u0105 skierowane. Mo\u017cna pozna\u0107 panuj\u0105ce trendy. Mo\u017cemy analizowa\u0107 r\u00f3wnie\u017c skal\u0119 takich atak\u00f3w na przyk\u0142ad atak \u003Cstrong\u003EDDoS\u003C\/strong\u003E kt\u00f3ry jest jednym z najpopularniejszych, najprostszych i najskuteczniejszych w ostatnich latach cyberatak\u00f3w.\n\n\u0026nbsp;\n\u003Ch3\u003ECzym jest atak DDoS?\u003C\/h3\u003E\nMo\u017cna atak por\u00f3wna\u0107 do obl\u0119\u017cenia hipermarketu podczas \u015bwi\u0105t gdzie tysi\u0105ce ludzi pr\u00f3buj\u0105 w tym samym czasie wej\u015b\u0107 do sklepu. Ochrona pilnuje klient\u00f3w i po kolei wpuszcza do sklepu. Ludzie chc\u0105cy wej\u015b\u0107 do sklepu to w\u0142a\u015bnie ruch sieciowy z tysi\u0119cy komputer\u00f3w internaut\u00f3w kt\u00f3ry skierowany jest w jednym momencie na dan\u0105 stron\u0119. Sklep to strona www a sklepowa ochrona to \u003Cem\u003EFirewall\u003C\/em\u003E.\n\nMap\u0105 godn\u0105 polecenia jest \u003Ca href=\u0022https:\/\/cybermap.kaspersky.com\/\u0022 target=\u0022_blank\u0022 rel=\u0022nofollow noopener\u0022\u003ECybermap\u003C\/a\u003E od\u00a0 firmy Kaspersky. Jest to mapa bardzo rozbudowana kt\u00f3ra\u00a0 wyszczeg\u00f3lnia osiem popularnych rodzaj\u00f3w atak\u00f3w na strony internetowe. Mapa obejmuje ataki z ca\u0142ego \u015bwiata. Aplikacja online zbiera dane z program\u00f3w zainstalowanych na komputerach prywatnych klient\u00f3w na ca\u0142ym \u015bwiecie.","date_published":"2017-02-12T21:44:59+01:00","date_modified":"2017-02-12T21:44:59+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI","WWW"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/stworz-szkic-strony-www-w-5-minut","url":"https:\/\/tomekkowalczyk.pl\/blog\/stworz-szkic-strony-www-w-5-minut","title":"Stw\u00f3rz szkic strony www w 5 minut","summary":"Potrzebujesz szkic strony internetowej? Stw\u00f3rz w\u0142asny projekt strony online za darmo. \u0026nbsp; Szkic stanowi wizualne przedstawienie element\u00f3w serwisu internetowego lub firmowej wizyt\u00f3wki internetowej. \u2026","content_html":"\u003Ch2\u003EPotrzebujesz szkic strony internetowej? Stw\u00f3rz w\u0142asny projekt strony online za darmo.\u003C\/h2\u003E\n\u0026nbsp;\n\nSzkic stanowi wizualne przedstawienie element\u00f3w serwisu internetowego lub firmowej wizyt\u00f3wki internetowej. Zawiera uk\u0142ad strony, nawigacj\u0119, oraz planowane funkcje. Innymi s\u0142owy, wszystko to, co odgrywa wa\u017cn\u0105 rol\u0119 w\u00a0skuteczno\u015bci prezentacji informacji na stronie www, a tak\u017ce decyduje o\u00a0jej u\u017cyteczno\u015bci.\n\nNa rynku jest mn\u00f3stwo stron, kt\u00f3re proponuj\u0105 tworzenie makiet, szkic\u00f3w stron www. Jednak nie wszystkie s\u0105 warte uwagi. Tworzenie szkic\u00f3w stron internetowych pomaga w uporz\u0105dkowaniu my\u015bli projektant\u00f3w. Pomaga r\u00f3wnie\u017c w z wizualizowaniu\u00a0 pomys\u0142\u00f3w klientowi. Co wa\u017cne mo\u017ce tak\u017ce uchroni\u0107 nas przed niepotrzebnymi modyfikacjami wynikaj\u0105cymi z b\u0142\u0119dnych ustale\u0144 pomi\u0119dzy klient - Deweloper www. Kiedy\u015b szkice witryn tworzy\u0142o si\u0119 na kartce papieru, teraz mo\u017cna wykorzysta\u0107 do tego na przyk\u0142ad narz\u0119dzie\u00a0 \u003Ca href=\u0022https:\/\/wireframe.cc\/\u0022 rel=\u0022nofollow\u0022\u003Ehttps:\/\/wireframe.cc\u003C\/a\u003E","date_published":"2017-02-11T13:27:13+01:00","date_modified":"2017-02-11T13:27:13+01:00","authors":[{"name":"Tomasz Kowalczyk"}]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/co-to-jest-certyfikat-multi-wildcard-ssl","url":"https:\/\/tomekkowalczyk.pl\/blog\/co-to-jest-certyfikat-multi-wildcard-ssl","title":"Co to jest certyfikat Multi Wildcard SSL?","summary":"Poznaj najbardziej rozwini\u0119ty us\u0142ugowo certyfikatu SSL jakim jest Multi Wildcard SSL. Zobacz czy warto go kupi\u0107? Ile mo\u017ce kosztowa\u0107? Dla kogo jest przeznaczony?. \u0026nbsp; OD REDAKCJI To czwarty tekst, z\u2026","content_html":"\u003Ch2\u003E\u003Cstrong\u003EPoznaj najbardziej rozwini\u0119ty us\u0142ugowo certyfikatu SSL jakim jest Multi Wildcard SSL. Zobacz czy warto go kupi\u0107? Ile mo\u017ce kosztowa\u0107? Dla kogo jest przeznaczony?.\n\u003C\/strong\u003E\u003C\/h2\u003E\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-info\u0022\u003E\n\n\u003Cstrong\u003EOD REDAKCJI\u003C\/strong\u003E\n\nTo czwarty tekst, z d\u0142u\u017cszego cyklu artyku\u0142\u00f3w na temat Certyfikatu SSL.\n\u003Col\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003ECzym jest certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/jaki-certyfikat-ssl-wybrac-na-www\/\u0022\u003EJaki wybra\u0107 certyfikat SSL na stron\u0119 www?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022\/co-to-jest-certyfikat-multidomain-ssl\/\u0022\u003ECo to jest certyfikat Multidomain SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003ECo to jest certyfikat Multi Wildcard SSL?\u003C\/strong\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/co-to-jest-certyfikat-ssl-wildcard\/\u0022\u003ECo to jest certyfikat SSL Wildcard?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/jak-zamowic-certyfikat-ssl-na-strone-www\/\u0022\u003EJak zam\u00f3wi\u0107 certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n \t\u003Cli\u003E\u003Ca href=\u0022http:\/\/egeek.pl\/jak-zainstalowac-certyfikat-ssl\/\u0022\u003EJak zainstalowa\u0107 certyfikat SSL?\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-simple\u0022\u003E\u003Cstrong\u003EPoziom trudno\u015bci:\u003C\/strong\u003E \u003Ci class=\u0022fa fa-star\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E\u003Ci class=\u0022fa fa-star-o\u0022\u003E\u003C\/i\u003E | \u003Cstrong\u003EWymagane:\u003C\/strong\u003E \u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003ECzym jest certyfikat SSL?\n\u003C\/a\u003E\nArtyku\u0142 opracowali\u015bmy dla os\u00f3b, kt\u00f3re nie znaj\u0105 jeszcze rodzaj\u00f3w certyfikatu SSL lub znaj\u0105 w mniejszym stopniu i chc\u0105 rozszerzy\u0107 swoje umiej\u0119tno\u015bci o wiedz\u0119 z zakresu SSL na strony www.\nArtyku\u0142 wymaga podstawowej wiedzy na temat certyfikatu SSL. Je\u017celi jeszcze nie zapozna\u0142e\u015b si\u0119 z artyku\u0142em wst\u0119pnym to zapraszamy do lektury \u003Ca href=\u0022http:\/\/egeek.pl\/czym-jest-certyfikat-ssl\/\u0022\u003ECzym jest certyfikat SSL?\u003C\/a\u003E\u003C\/div\u003E\n\u0026nbsp;\n\nCertyfikat SSL szyfruje ca\u0142\u0105 komunikacj\u0119 pomi\u0119dzy Twoj\u0105 przegl\u0105dark\u0105 internetow\u0105 a serwisem internetowym np. sklepem on-line. Dzi\u0119ki temu masz pewno\u015b\u0107, \u017ce przesy\u0142ane dane s\u0105 bezpieczne. Certyfikat SSL jest wi\u0119c gwarantem zachowania poufno\u015bci danych. Ponadto gwarancja jest udzielana przez niezale\u017cny podmiot, czyli wystawc\u0119.\n\nCertyfikaty internetowe mo\u017cemy podzieli\u0107 na cztery typy w zale\u017cno\u015bci od zakresu ochrony. Wyr\u00f3\u017cniamy zwyk\u0142y certyfikat, certyfikat SSL Wildcard, Multi Wildcard SSL i Multidomain SSL.\n\nCertyfikat Multi Wildcard SSL\u003Cstrong\u003E to certyfikat najbardziej rozwini\u0119ty us\u0142ugowo z pozosta\u0142ych poniewa\u017c swoimi us\u0142ugami obejmuje ochron\u0105 kilka r\u00f3\u017cnych domen i nieograniczon\u0105 liczb\u0119 subdomen.\u003C\/strong\u003E Maksymaln\u0105 ilo\u015b\u0107 adres\u00f3w domenowych okre\u015bla dostawca us\u0142ug. Takie rozwi\u0105zanie \u0142\u0105czy zalety \u003Ca href=\u0022\/co-to-jest-certyfikat-multidomain\/\u0022\u003Ecertyfikatu Multidomain SSL\u003C\/a\u003E, czyli zabezpieczenie wiele r\u00f3\u017cnych stron internetowych w ramach jednej us\u0142ugi oraz certyfikatu Wildcard SSL, kt\u00f3ry obejmuje wszystkie subdomeny domen pierwszego stopnia.\n\u003Ch3\u003E\u003C\/h3\u003E\n\u0026nbsp;\n\u003Ch3\u003E\u003Cstrong\u003EKorzy\u015bci jakie dostaniemy od Certyfikatu Multi Wildcard SSL:\u003C\/strong\u003E\u003C\/h3\u003E\n\u003Cul\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EWygoda u\u017cytkowania\u003C\/strong\u003E \u2013 zabezpieczenia dla wszystkich Twoich domen i subdomen, s\u0105 konfigurowane w ramach jednego panelu klienta\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EJeden adres IP\u003C\/strong\u003E \u2013do zabezpieczenia wszystkich adres\u00f3w nie s\u0105 potrzebne dodatkowe adresy IP.\u003C\/li\u003E\n \t\u003Cli\u003E\u003Cstrong\u003EOptymalizacja koszt\u00f3w.\u003C\/strong\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\u003C\/h3\u003E\n\u0026nbsp;\n\u003Ch3\u003ECertyfikaty Multi Wildcard r\u00f3\u017cni\u0105 si\u0119 od siebie\u003C\/h3\u003E\n\u003Col\u003E\n \t\u003Cli\u003Ezakresem walidacji,\u003C\/li\u003E\n \t\u003Cli\u003Ed\u0142ugo\u015bci\u0105 klucza szyfrowania\u003C\/li\u003E\n \t\u003Cli\u003Eilo\u015bci\u0105 domen, kt\u00f3re obejmuj\u0105\u003C\/li\u003E\n\u003C\/ol\u003E\n\u0026nbsp;\n\u003Cdiv class=\u0022bs-shortcode-alert alert alert-success\u0022\u003E\n\n\u003Cstrong\u003EG\u0142\u00f3wne zalety certyfikatu SSL Multi Wildcard:\u003C\/strong\u003E\n\u003Cul\u003E\n \t\u003Cli\u003EProsta obs\u0142uga - konfigurujesz i zarz\u0105dzasz zabezpieczeniami dla wszystkich swoich domen i subdomen w jednym miejscu.\u003C\/li\u003E\n \t\u003Cli\u003EMniejsze koszty \u2013 w por\u00f3wnaniu z kupnem kilku certyfikat\u00f3w osobno certyfikat Multi Wildcard SSL kosztuje znacznie mniej.\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cp style=\u0022text-align: left;\u0022\u003E\u003C\/p\u003E","date_published":"2017-02-10T16:09:50+01:00","date_modified":"2017-02-10T16:09:50+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["AI"]},{"id":"https:\/\/tomekkowalczyk.pl\/blog\/luka-w-wp-rest-api-wordpress","url":"https:\/\/tomekkowalczyk.pl\/blog\/luka-w-wp-rest-api-wordpress","title":"Luka w WP Rest Api WordPress 4.7.0 i 4.7.1","summary":"U\u017cywasz WordPress w wersji 4.7.0 lub 4.7.1? Zaktualizuj go do nowszej wersji!. Inaczej strona b\u0119dzie podatna na atak w interfejsie REST API. \u0026nbsp; Tw\u00f3rcy WordPress od wersji 4.7 wprowadzili pe\u0142n\u0105 wer\u2026","content_html":"\u003Ch2\u003EU\u017cywasz WordPress w wersji 4.7.0 lub 4.7.1? Zaktualizuj go do nowszej wersji!. Inaczej strona b\u0119dzie podatna na atak w interfejsie REST API.\u003C\/h2\u003E\n\u0026nbsp;\n\nTw\u00f3rcy WordPress od wersji 4.7 wprowadzili pe\u0142n\u0105 wersje REST API, dzi\u0119ki czemu zewn\u0119trzne aplikacje mog\u0105 odczytywa\u0107 publiczne tre\u015bci dost\u0119pne na stronie. Je\u017celi skonfigurujemy tak\u017ce autoryzacj\u0119 to r\u00f3wnie\u017c mo\u017cliwe jest\u00a0 modyfikowanie, dodawanie wpis\u00f3w i stron. Oczywi\u015bcie jest to bardzo dobra funkcjonalno\u015b\u0107 ale niestety nie dopracowana.\n\nDomy\u015blnie taki interfejs jest w\u0142\u0105czony. Oznacza to tyle \u017ce ka\u017cdy mo\u017ce odczyta\u0107 takie wpisy. W\u00a0Internecie jest mn\u00f3stwo serwis\u00f3w, kt\u00f3re odczytuj\u0105 tre\u015bci bez wiedzy i\u00a0zgody\u00a0ich autor\u00f3w i umieszczaj\u0105 na swoich stronach. O ile przy kanale RSS mo\u017cna ograniczy\u0107 takie artyku\u0142y do zajawki to przy REST API ju\u017c nie.\n\n\u0026nbsp;\n\u003Ch3\u003ELuka w WP REST API\u003C\/h3\u003E\nNiedawno pojawi\u0142 si\u0119 b\u0142\u0105d zwi\u0105zany z rzutowaniem zmiennych w PHP kt\u00f3ry umo\u017cliwia edytowanie wpisu bez uprawnie\u0144. Na atak podatne s\u0105 wersje 4.7.0 i 4.7.1. Oczywi\u015bcie przypominamy \u017ce jest ju\u017c wersja 4.7.2 tak\u017ce zach\u0119camy do aktualizacji!.\n\n\u0026nbsp;\n\u003Ch3\u003EWy\u0142\u0105czenie REST API\u003C\/h3\u003E\nMo\u017cemy tak\u017ce wy\u0142\u0105czy\u0107 na sta\u0142e REST API je\u017celi z niego nie korzystamy.\n\nWystarczy doda\u0107 do pliku \u003Cstrong\u003Efunctions.php \u003C\/strong\u003Enast\u0119puj\u0105cy kod\n\u003Cpre class=\u0022lang:php decode:true \u0022\u003Eadd_filter(\u0027rest_authentication_errors\u0027, \u0027egeek_disable_rest_api\u0027, 99);\n\nfunction egeek_disable_rest_api() {\n   return new WP_Error(\u0027egeek_rest_api_disabled\u0027, \u0027REST API disables\u0027, array(\u0027status\u0027 =\u0026gt; 403));\n}\u003C\/pre\u003E\n\u0026nbsp;\n\n\u0026nbsp;","date_published":"2017-02-07T20:04:17+01:00","date_modified":"2017-02-07T20:04:17+01:00","authors":[{"name":"Tomasz Kowalczyk"}],"tags":["PHP","WWW","WordPress"]}]}