Pomagam dzieciom!

optymalizacja i zabezpieczenie / CMS Wordpress

Optymalizacja i zabezpieczenie / CMS Wordpress

Tagi: Audyt WordPress, optymalizacja, pozycjonowanie, programowanie, SEO, strony www, WordPress, zabezpieczenie

WordPress / Responsive Developer / Art Designer


I. Archiwizacja danych

Przed rozpoczęciem pracy najpierw wykonuję kopię strony internetowej.

  • Updraft Plus.

II. Aktualizacja CMS WordPress i dodatków

Pierwszym etapem optymalizacji jest aktualizacja systemu oraz dodatków do najnowszych wersji. Jest to bardzo ważne, gdyż autorzy co pewien czas poprawiają błędy, usuwają dziury w zabezpieczeniach, zwiększają szybkość działania, czy dodają nowe, ciekawe funkcje.

III. Optymalizacja prędkości działania

Strony internetowe instalowane na WordPressie często wolno się wczytują, szczególnie w wieczornych godzinach, kiedy hostingi są najbardziej obciążone. Zacząć należy od zmiany na serwerze wersji PHP na 7 oraz wyłączenia zbędnych dodatków. Następnie instaluję plugin buforujący kod PHP, dzięki któremu dynamiczne strony otwierają się w postaci statycznych, oraz minimalizujący kod strony i wielkości zdjęć. Warto skonfigurować stronę pod globalny CDN Cloudflare (cloudflare.com), dzięki czemu strona będzie pobierana z najbliższych użytkownikowi lokalizacji na całym świecie.

  • P3 Plugin Performance Profiler, analiza i wyłączenie zbędnych dodatków,
  • W3 Total Cache, WP Super Cache, LiteSpeed Cache, buforowanie kodu PHP,
  • Autoptimize, minimalizacja kodu strony,
  • Jetpack z WordPress.com / Photon, optymalizacja zdjęć, kompresja i integracja z CDN WordPress,
  • optymalizacja .htaccess, modyfikacja czasu buforowania kodu przez przeglądarkę, kompresja kodu dla przeglądarki:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .(php|aspx|html|htm|css|js|ico|jpg|jpeg|png|gif|swf|json|xsd|txt|eot|woff|woff2|ttf|svg|zip|gzip|gz|suspected|env)$ - [F,L]

<FilesMatch "\.(css|js|ico|jpg|jpeg|png|gif|swf|xml|json|txt|eot|woff|woof2|ttf|svg|pdf|doc|xls)$">
RequestHeader unset Cookie
Header unset Set-Cookie
Header unset Cookie
</FilesMatch>

<IfModule mod_expires.c>
 FileETag MTime

ExpiresActive on
ExpiresDefault "access plus 28 days"

ExpiresByType text/html "access plus 3 hours"

ExpiresByType application/json "access plus 3 hours"
ExpiresByType text/xml "access plus 3 hours"
ExpiresByType application/xml+rss "access plus 3 hours"

ExpiresByType text/css "access plus 7 days"

ExpiresByType text/javascript "access plus 14 days"
ExpiresByType application/x-javascript "access plus 14 days"
ExpiresByType application/javascript "access plus 14 days"

ExpiresByType text/plain "access plus 28 days"

ExpiresByType image/x-icon "access plus 28 days"
ExpiresByType image/jpeg "access plus 28 days"
ExpiresByType image/png "access plus 28 days"
ExpiresByType image/gif "access plus 28 days"

ExpiresByType application/x-shockwave-flash "access plus 28 days"

ExpiresByType application/x-font-ttf "access plus 1 years"
ExpiresByType application/x-font-opentype "access plus 1 years"
ExpiresByType application/x-font-woff "access plus 1 years"
ExpiresByType application/x-font-woff2 "access plus 1 years"
ExpiresByType application/vnd.ms-fontobject "access plus 1 years"
ExpiresByType image/svg+xml "access plus 1 years"

ExpiresByType text/x-component "access plus 1 years"
</IfModule>

<IfModule mod_deflate.c>
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/plain

 AddOutputFilterByType DEFLATE application/json
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE application/xml+rss

 AddOutputFilterByType DEFLATE text/css

 AddOutputFilterByType DEFLATE text/javascript
 AddOutputFilterByType DEFLATE application/x-javascript
 AddOutputFilterByType DEFLATE application/javascript

 AddOutputFilterByType DEFLATE application/x-shockwave-flash

 AddOutputFilterByType DEFLATE application/x-font-ttf
 AddOutputFilterByType DEFLATE application/x-font-opentype
 AddOutputFilterByType DEFLATE application/x-font-woff
 AddOutputFilterByType DEFLATE application/x-font-woff2
 AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
 AddOutputFilterByType DEFLATE image/svg+xml

 AddOutputFilterByType DEFLATE text/x-component

 # Remove browser bugs (only needed for really old browsers)
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 Header append Vary User-Agent
</IfModule>

IV. Optymalizacja bazy danych

Optymalizuje tabele bazy danych, opróżniam kosz, usuwam wersje wpisów, automatyczne szkice, spam oraz stare dane. Najwięcej miejsca zajmują wersje wpisów, dlaczego dodatkowo warto ograniczyć ich ilość do 100.

  • WP-Optimize,
  • optymalizacja wp-config.php, modyfikacja częstotliwości auto zapisu wpisów oraz ograniczenie liczby wersji:

define('AUTOSAVE_INTERVAL',3600);
define('WP_POST_REVISIONS',100);

V. Bezpieczeństwo

Po pierwsze przy instalacji WordPressa należy podać inną niż domyślna nazwę bazy danych. Nie wolno także stosować jako nazwy administratora domyślnego loginu "admin" czy "administrator". Jeżeli udzielamy się na stronie, nie powinno się wykorzystywać konta administratora do publikowania artykułów oraz komentowania, a pseudonim trzeba ustawić inny niż nazwa użytkownika. Dzięki temu unikniemy wielu ataków usiłujących na siłę wydobyć nasze hasło do serwisu.

  • Wordfence Security, zabezpieczenie przed podstawowymi atakami i wirusami,
  • Loginizer, ochrona logowania / anty brute force,
  • zabezpieczenie PHP:

function sr_security() {
  global $user_ID;

  if ($user_ID) {
    if ( !current_user_can('manage_options') ) {
      if (strlen($_SERVER['REQUEST_URI']) > 255 ||
          stripos($_SERVER['REQUEST_URI'], "eval(") ||
          stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
          stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
          stripos($_SERVER['REQUEST_URI'], "base64")) {
        if (!headers_sent()) {
          header("HTTP/1.1 414 Request-URI Too Long");
          header("Status: 414 Request-URI Too Long");
          header("Connection: Close");
        }
        exit;
      }
    }
  }
}
add_action( 'init', 'sr_security' );

  • zabezpieczenie .htaccess, blokada wyszukiwania autorów, 7G BLACKLIST/FIREWALL:

RewriteCond %{REQUEST_URI} ^/wp-login.php [NC]
RewriteCond %{HTTP:Accept-Language} !^(pl|de|en) [NC]
RewriteRule .* - [F,L]

RewriteCond %{QUERY_STRING} author=
RewriteRule .* - [F,L]

RewriteCond %{REQUEST_URI} ^./wp-json [NC]
RewriteCond %{REQUEST_URI} !^./wp-json/contact-form-7 [NC]
RewriteCond %{HTTP_COOKIE} !^.wordpress_logged_in.$ [NC]
RewriteRule .* - [F,L]

RewriteCond %{REQUEST_URI} undefined$ [NC]
RewriteRule .* - [F,L]

ErrorDocument 404 /empty.html

# 7G FIREWALL v1.2 20190727
# @ https://perishablepress.com/7g-firewall/
# 7G:[CORE]

ServerSignature Off
Options -Indexes
RewriteEngine On
RewriteBase /

# 7G:[QUERY STRING]
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} !(7g_log.php) [NC]

RewriteCond %{QUERY_STRING} ([a-z0-9]{2000,}) [NC,OR]
RewriteCond %{QUERY_STRING} (/|%2f)(:|%3a)(/|%2f) [NC,OR]
RewriteCond %{QUERY_STRING} (/|%2f)(\*|%2a)(\*|%2a)(/|%2f) [NC,OR]
RewriteCond %{QUERY_STRING} (~|`|<|>|\^|\|\\|0x00|%00|%0d%0a) [NC,OR]
RewriteCond %{QUERY_STRING} (cmd|command)(=|%3d)(chdir|mkdir)(.*)(x20) [NC,OR]
RewriteCond %{QUERY_STRING} (fck|ckfinder|fullclick|ckfinder|fckeditor) [NC,OR]
RewriteCond %{QUERY_STRING} (/|%2f)((wp-)?config)((\.|%2e)inc)?((\.|%2e)php) [NC,OR]
RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumbs?)?)((\.|%2e)php) [NC,OR]
RewriteCond %{QUERY_STRING} (absolute_|base|root_)(dir|path)(=|%3d)(ftp|https?) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127(\.|%2e)0(\.|%2e)0(\.|%2e)1) [NC,OR]
RewriteCond %{QUERY_STRING} (\.|20)(get|the)(_|%5f)(permalink|posts_page_url)(\(|%28) [NC,OR]
RewriteCond %{QUERY_STRING} (s)?(ftp|http|inurl|php)(s)?(:(/|%2f|%u2215)(/|%2f|%u2215)) [NC,OR]
RewriteCond %{QUERY_STRING} (globals|mosconfig([a-z_]{1,22})|request)(=|\[|%[a-z0-9]{0,2}) [NC,OR]
RewriteCond %{QUERY_STRING} ((boot|win)((\.|%2e)ini)|etc(/|%2f)passwd|self(/|%2f)environ) [NC,OR]
RewriteCond %{QUERY_STRING} (((/|%2f){3,3})|((\.|%2e){3,3})|((\.|%2e){2,2})(/|%2f|%u2215)) [NC,OR]
RewriteCond %{QUERY_STRING} (benchmark|char|exec|fopen|function|html)(.*)(\(|%28)(.*)(\)|%29) [NC,OR]
RewriteCond %{QUERY_STRING} (php)([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}) [NC,OR]
RewriteCond %{QUERY_STRING} (e|%65|%45)(v|%76|%56)(a|%61|%31)(l|%6c|%4c)(.*)(\(|%28)(.*)(\)|%29) [NC,OR]
RewriteCond %{QUERY_STRING} (/|%2f)(=|%3d|$&|_mm|cgi(\.|-)|inurl(:|%3a)(/|%2f)|(mod|path)(=|%3d)(\.|%2e)) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3c)(.*)(e|%65|%45)(m|%6d|%4d)(b|%62|%42)(e|%65|%45)(d|%64|%44)(.*)(>|%3e) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3c)(.*)(i|%69|%49)(f|%66|%46)(r|%72|%52)(a|%61|%41)(m|%6d|%4d)(e|%65|%45)(.*)(>|%3e) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3c)(.*)(o|%4f|%6f)(b|%62|%42)(j|%4a|%6a)(e|%65|%45)(c|%63|%43)(t|%74|%54)(.*)(>|%3e) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3c)(.*)(s|%73|%53)(c|%63|%43)(r|%72|%52)(i|%69|%49)(p|%70|%50)(t|%74|%54)(.*)(>|%3e) [NC,OR]
RewriteCond %{QUERY_STRING} (\+|%2b|%20)(d|%64|%44)(e|%65|%45)(l|%6c|%4c)(e|%65|%45)(t|%74|%54)(e|%65|%45)(\+|%2b|%20) [NC,OR]
RewriteCond %{QUERY_STRING} (\+|%2b|%20)(i|%69|%49)(n|%6e|%4e)(s|%73|%53)(e|%65|%45)(r|%72|%52)(t|%74|%54)(\+|%2b|%20) [NC,OR]
RewriteCond %{QUERY_STRING} (\+|%2b|%20)(s|%73|%53)(e|%65|%45)(l|%6c|%4c)(e|%65|%45)(c|%63|%43)(t|%74|%54)(\+|%2b|%20) [NC,OR]
RewriteCond %{QUERY_STRING} (\+|%2b|%20)(u|%75|%55)(p|%70|%50)(d|%64|%44)(a|%61|%41)(t|%74|%54)(e|%65|%45)(\+|%2b|%20) [NC,OR]
RewriteCond %{QUERY_STRING} (\\x00|(\"|%22|\'|%27)?0(\"|%22|\'|%27)?(=|%3d)(\"|%22|\'|%27)?0|cast(\(|%28)0x|or%201(=|%3d)1) [NC,OR]
RewriteCond %{QUERY_STRING} (g|%67|%47)(l|%6c|%4c)(o|%6f|%4f)(b|%62|%42)(a|%61|%41)(l|%6c|%4c)(s|%73|%53)(=|[|%[0-9A-Z]{0,2}) [NC,OR]
RewriteCond %{QUERY_STRING} (_|%5f)(r|%72|%52)(e|%65|%45)(q|%71|%51)(u|%75|%55)(e|%65|%45)(s|%73|%53)(t|%74|%54)(=|[|%[0-9A-Z]{0,2}) [NC,OR]
RewriteCond %{QUERY_STRING} (j|%6a|%4a)(a|%61|%41)(v|%76|%56)(a|%61|%31)(s|%73|%53)(c|%63|%43)(r|%72|%52)(i|%69|%49)(p|%70|%50)(t|%74|%54)(:|%3a)(.*)(;|%3b|\)|%29) [NC,OR]
RewriteCond %{QUERY_STRING} (b|%62|%42)(a|%61|%41)(s|%73|%53)(e|%65|%45)(6|%36)(4|%34)(_|%5f)(e|%65|%45|d|%64|%44)(e|%65|%45|n|%6e|%4e)(c|%63|%43)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(.*)(\()(.*)(\)) [NC,OR]
RewriteCond %{QUERY_STRING} (allow_url_(fopen|include)|auto_prepend_file|blexbot|browsersploit|(c99|php)shell|curltest|disable_functions?|document_root|elastix|encodeuricom|exec|exploit|fclose|fgets|fputs|fsbuff|fsockopen|gethostbyname|grablogin|hmei7|input_file|load_file|null|open_basedir|outfile|passthru|popen|proc_open|quickbrute|remoteview|root_path|safe_mode|shell_exec|site((.){0,2})copier|sux0r|trojan|wget|xertive) [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|\'|\"|\)|%0a|%0d|%22|%27|%3c|%3e|%00)(.*)(/\*|alter|base64|benchmark|cast|char|concat|convert|create|encode|declare|delete|drop|insert|md5|order|request|script|select|set|union|update) [NC,OR]
RewriteCond %{QUERY_STRING} ((\+|%2b)(concat|delete|get|select|union)(\+|%2b)) [NC,OR]
RewriteCond %{QUERY_STRING} (union)(.*)(select)(.*)(\(|%28) [NC,OR]
RewriteCond %{QUERY_STRING} (concat)(.*)(\(|%28) [NC]

RewriteRule .* - [F,L]

# RewriteRule .* /7g_log.php?log [L,NE,E=7G_QUERY_STRING:%1___%2___%3]

</IfModule>

# 7G:[REQUEST URI]
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} !(7g_log.php) [NC]

RewriteCond %{REQUEST_URI} ([a-z0-9]{2000,}) [NC,OR]
RewriteCond %{REQUEST_URI} (=?\\(\'|%27)/?)(\.) [NC,OR]
RewriteCond %{REQUEST_URI} (/)(\*|\"|\'|\.|,|&|&amp;?)/?$ [NC,OR]
RewriteCond %{REQUEST_URI} (\.)(php)(\()?([0-9]+)(\))?(/)?$ [NC,OR]
RewriteCond %{REQUEST_URI} (/)(vbulletin|boards|vbforum)(/)? [NC,OR]
RewriteCond %{REQUEST_URI} (\^|~|`|<|>|,|%|\\|\{|\}|\[|\]|\|) [NC,OR]
RewriteCond %{REQUEST_URI} (\.(s?ftp-?)config|(s?ftp-?)config\.) [NC,OR]
RewriteCond %{REQUEST_URI} (\{0\}|\"?0\"?=\"?0|\(/\(|\.\.\.|\+\+\+|\\\") [NC,OR]
RewriteCond %{REQUEST_URI} (thumbs?(_editor|open)?|tim(thumbs?)?)(\.php) [NC,OR]
RewriteCond %{REQUEST_URI} (/)(fck|ckfinder|fullclick|ckfinder|fckeditor) [NC,OR]
RewriteCond %{REQUEST_URI} (\.|20)(get|the)(_)(permalink|posts_page_url)(\() [NC,OR]
RewriteCond %{REQUEST_URI} (///|\?\?|/&&|/\*(.*)\*/|/:/|\\\\|0x00|%00|%0d%0a) [NC,OR]
RewriteCond %{REQUEST_URI} (/%7e)(root|ftp|bin|nobody|named|guest|logs|sshd)(/) [NC,OR]
RewriteCond %{REQUEST_URI} (/)(etc|var)(/)(hidden|secret|shadow|ninja|passwd|tmp)(/)?$ [NC,OR]
RewriteCond %{REQUEST_URI} (s)?(ftp|http|inurl|php)(s)?(:(/|%2f|%u2215)(/|%2f|%u2215)) [NC,OR]
RewriteCond %{REQUEST_URI} (/)(=|\$&?|&?(pws|rk)=0|_mm|_vti_|cgi(\.|-)?|(=|/|;|,)nt\.) [NC,OR]
RewriteCond %{REQUEST_URI} (\.)(conf(ig)?|ds_store|htaccess|htpasswd|init?|mysql-select-db)(/)?$ [NC,OR]
RewriteCond %{REQUEST_URI} (/)(bin)(/)(cc|chmod|chsh|cpp|echo|id|kill|mail|nasm|perl|ping|ps|python|tclsh)(/)?$ [NC,OR]
RewriteCond %{REQUEST_URI} (/)(::[0-9999]|%3a%3a[0-9999]|127\.0\.0\.1|localhost|loopback|makefile|pingserver|wwwroot)(/)? [NC,OR]
RewriteCond %{REQUEST_URI} (\(null\)|\{\$itemURL\}|cAsT\(0x|echo(.*)kae|etc/passwd|eval\(|self/environ|\+union\+all\+select) [NC,OR]
RewriteCond %{REQUEST_URI} (/)(awstats|(c99|php|web)shell|document_root|error_log|listinfo|muieblack|remoteview|site((.){0,2})copier|sqlpatch|sux0r) [NC,OR]
 RewriteCond %{REQUEST_URI} (/)((php|web)?shell|conf(ig)?|crossdomain|fileditor|locus7|nstview|php(get|remoteview|writer)|r57|remview|sshphp|storm7|webadmin)(.*)(\.|\() [NC,OR]
 RewriteCond %{REQUEST_URI} (/)(author-panel|bitrix|class|database|(db|mysql)-?admin|filemanager|htdocs|httpdocs|https?|mailman|mailto|msoffice|mysql|_?php-?my-?admin(.*)|sql|system|tmp|undefined|usage|var|vhosts|webmaster|www)(/) [NC,OR]
 RewriteCond %{REQUEST_URI} (base64_(en|de)code|benchmark|child_terminate|e?chr|eval|exec|function|fwrite|(f|p)open|html|leak|passthru|p?fsockopen|phpinfo|posix_(kill|mkfifo|setpgid|setsid|setuid)|proc_(close|get_status|nice|open|terminate)|(shell_)?exec|system)(.*)(\()(.*)(\)) [NC,OR]
 RewriteCond %{REQUEST_URI} (\.)(7z|ab4|afm|aspx?|bash|ba?k?|bz2|cfg|cfml?|cgi|conf(ig)?|ctl|dat|db|dll|eml|et2|exe|fec|fla|hg|inc|ini|inv|jsp|lqd|mbf|mdb|mmw|mny|old|one|out|passwd|pdb|pl|psd|pst|ptdb|pwd|py|qbb|qdf|rar|rdf|sdb|sql|sh|soa|swf|swl|swp|stx|tar|tax|tgz|tls|tmd|wow|zlib)$ [NC,OR]
 RewriteCond %{REQUEST_URI} (/)(^$|00.temp00|0day|3xp|70bex?|admin_events|bkht|(php|web)?shell|configbak|curltest|db|dompdf|filenetworks|hmei7|index\.php/index\.php/index|jahat|kcrew|keywordspy|mobiquo|mysql|nessus|php-?info|racrew|sql|ucp|webconfig|(wp-)?conf(ig)?(uration)?|xertive)(\.php) [NC]

 RewriteRule .* - [F,L]

# RewriteRule .* /7g_log.php?log [L,NE,E=7G_REQUEST_URI:%1___%2___%3]

</IfModule>

# 7G:[USER AGENT]
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} !(7g_log.php) [NC]

RewriteCond %{HTTP_USER_AGENT} ([a-z0-9]{2000,}) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (&lt;|%0a|%0d|%27|%3c|%3e|%00|0x00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ((c99|php|web)shell|remoteview|site((.){0,2})copier) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (base64_decode|bin/bash|disconnect|eval|lwp-download|unserialize|\\\x22) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (360Spider|acapbot|acoonbot|ahrefs|alexibot|asterias|attackbot|backdorbot|becomebot|binlar|blackwidow|blekkobot|blexbot|blowfish|bullseye|bunnys|butterfly|careerbot|casper|checkpriv|cheesebot|cherrypick|chinaclaw|choppy|clshttp|cmsworld|copernic|copyrightcheck|cosmos|crescent|cy_cho|datacha|demon|diavol|discobot|dittospyder|dotbot|dotnetdotcom|dumbot|emailcollector|emailsiphon|emailwolf|exabot|extract|eyenetie|feedfinder|flaming|flashget|flicky|foobot|g00g1e|getright|gigabot|go-ahead-got|gozilla|grabnet|grafula|harvest|heritrix|httrack|icarus6j|jetbot|jetcar|jikespider|kmccrew|leechftp|libweb|linkextractor|linkscan|linkwalker|loader|miner|majestic|mechanize|mj12bot|morfeus|moveoverbot|netmechanic|netspider|nicerspro|nikto|ninja|nutch|octopus|pagegrabber|planetwork|postrank|proximic|purebot|pycurl|python|queryn|queryseeker|radian6|radiation|realdownload|rogerbot|scooter|seekerspider|semalt|seznambot|siclab|sindice|sistrix|sitebot|siteexplorer|sitesnagger|skygrid|smartdownload|snoopy|sosospider|spankbot|spbot|sqlmap|stackrambler|stripper|sucker|surftbot|sux0r|suzukacz|suzuran|takeout|teleport|telesoft|true_robots|turingos|turnit|vampire|vikspider|voideye|webleacher|webreaper|webstripper|webvac|webviewer|webwhacker|winhttp|wwwoffle|woxbot|xaldon|xxxyy|yamanalab|yioopbot|youda|zeus|zmeu|zune|zyborg) [NC]

RewriteRule .* - [F,L]

# RewriteRule .* /7g_log.php?log [L,NE,E=7G_USER_AGENT:%1]

</IfModule>

# 7G:[REMOTE HOST]
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} !(7g_log.php) [NC]

RewriteCond %{REMOTE_HOST} (163data|amazonaws|colocrossing|crimea|g00g1e|justhost|kanagawa|loopia|masterhost|onlinehome|poneytel|sprintdatacenter|reverse.softlayer|safenet|ttnet|woodpecker|wowrack) [NC]

RewriteRule .* - [F,L]

# RewriteRule .* /7g_log.php?log [L,NE,E=7G_REMOTE_HOST:%1]

</IfModule>

# 7G:[HTTP REFERRER]
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} !(7g_log.php) [NC]

RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC,OR]
RewriteCond %{HTTP_REFERER} (ambien|blue\spill|cialis|cocaine|ejaculat|erectile|erections|hoodia|huronriveracres|impotence|levitra|libido|lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby|ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo) [NC]

RewriteRule .* - [F,L]

# RewriteRule .* /7g_log.php?log [L,NE,E=7G_HTTP_REFERRER:%1]

</IfModule>

# 7G:[REQUEST METHOD]
<IfModule mod_rewrite.c>

RewriteCond %{REQUEST_URI} !(7g_log.php) [NC]

RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|put|trace|track) [NC]

RewriteRule .* - [F,L]

# RewriteRule .* /7g_log.php?log [L,NE,E=7G_REQUEST_METHOD:%1]

</IfModule>

  • zabezpieczenie wp-config.php, wyłączenie możliwości edycji plików z poziomu WordPress:

define('DISALLOW_FILE_EDIT',true);

WordPress wykorzystywany jest często jako katalog SEO, tak więc każdy jego użytkownik jest potencjalnym celem ataku spamerów. Nie można pozostawić niezabezpieczonych formularzy, w przeciwnym razie zostaniemy zarzuceni masą automatycznie generowanych komentarzy, e-maili w skrzynce pocztowej.

  • Akismet, zabezpieczenie przed spamem,
  • zabezpieczenie formularza:

.DISABLE{display:none}

<input name="sr-code" value="ąćęłńóśżź" type="hidden" />
<input class="DISABLE" name="submit" value="spam" type="submit" />
<input name="submit" value="Wyślij" type="submit" />

 if (($_POST['submit']==='spam') || ($_POST['sr-code']!=='ąćęłńóśżź')) die();


Doświadczenie

Na rynku działam ponad 10 lat, zrealizowałem setki projektów. Przede wszystkim lubię swoją pracę, jest ona moją pasją.

Wiedza i innowacyjność

Nieustannie poszerzam swoją wiedzę i rozwijam umiejętności. W codziennym cyklu pracy nigdy nie może zabraknąć czasu na branżowe szkolenia czy konferencje, czytanie blogów oraz testowanie nowych rozwiązań.

Zaangażowanie

Powierzone mi zadania zawsze wykonuję rzetelnie i solidnie. Żadna aplikacja nie zostanie przeniesiona na docelowy serwer bez przejścia przez szereg testów. Błędy, oczywiście, zawsze mogą wystąpić, nie zaprzeczam im. Moim priorytetem jest szybkie i sprawne ich usunięcie.

Elastyczność

Kontakt możliwy również wieczorami i w weekendy. W awaryjnych sytuacjach, wykonuję ekspresowe zadania, także w trybie weekendowym, z krótkim terminem wykonania.

Klienci

  • logo play
  • logo plk
  • logo pkp-cargo
  • logo uniwersytet-warszawski
  • logo politechnika-poznanska
  • logo uniwersytet-adama-mickiewicza
  • logo termy-maltanskie
  • logo rzeczpospolita
  • logo v33
  • logo ferguson
  • logo unitra
  • logo wyzsza-szkola-urody-i-edukacji
  • logo wyzsza-szkola-handlu-i-uslug