Archive for 27.09.2007

Par Google un drošību utt.

0

Aizvien biežāk mums nepieciešams, lai dažādas elektroniskās lietas būtu ātri un ērti pieejamas no jebkura datora, kuram ir internets. E-pasts, grāmatzīmes, kalendārs, dokumenti un citi faili bieži vien tiek izvietoti uz kādas citas puses serveriem. Piemēram, Google. Bet te sākas problēmas. Ne jau pie vainas ir paranoja par to, ka Google no saglabātajām lietām var ievākt ļoti lielu informāciju par katru indivīdu. Lieta tāda, ka jūsu informācija var nonākt arī trešās puses rokās. Šonedēļ kā sēnes pēc lietus saradusies informācija par daudzajām Google servisu ievainojamībām, kuru rezultātā iespējams piekļūt citu cilvēku e-pastiem, dokumentiem utt. Piemēram, kaut vai šis ieraksts. Lasam, priecājamies, bēdājamies un pārdomājam vai uzticēt savu saturu kādai citai pusei. Ne tikai Google. Ievainojamības var atrast jebkuram servisam.

Kaut kas ir jāmaina Web programmēšanas tehnoloģijās. Ar nesen ieviestajām iespējām Web lapu funkcionalitāte ir pacelta jaunā līmenī, bet arī to ievainojamība. Nav nekādu problēmu imitēt lietotāju darbības, taisīt tārpus, kas paši izplatās pa dažādiem epastiem (nav nepieciešama reāla cilvēka līdzdalība) utt. Web 3.0 nekādus uzlabojumus nesola, jo Web lapas paliks tikai vēl sarežģītākas un sastāvēs no aizvien vairāk moduļiem, kur katrs varēs būt jauns drauds kopējai drošībai. Kam ir jānotiek, lai kardināli mainītu principus pēc kādiem tiek būvētas Web aplikācijas un kādiem jābūt principiem, lai šādas ievainojamības tiktu likvidētas?

Par PHP strtotime() funkciju

3

Kādu laiku iepriekš jau rakstīju par problēmām, kuras man bija radušās izmantojot PHP funkcijas date() un strtotime(). Nesen saskāros ar vēl vienu problēmu strtotime() izmantošanā. Pēc savas būtības šī funkcija ir neaizvietojama daudzās situācijās. Varbūt ir aizvietojama, bet tādā gadījumā es labprāt uzzinātu par alternatīvām ar līdzīgu funkcionalitāti. Ko tad šī funkcija dara? Viņa paņem datumu, kas pierakstīts teksta formātā un pārvērš to sekundēs. Savukārt sekundes mēs varam ar date() funkciju pārvērst par mums nepieciešamā formātā esošu datumu.

Parasti, ja funkcijai strtotime() padod datumu kādā formātā, kuru tā nespēj apstrādāt, atbildē būs sekundes, kuras neatbilst konkrētajam datuma. Nu lūk – problēma radās apstāklī, ka visi datumi, kurus Web lapā jāredz lietotājam un kurus viņš ievada nepieciešamajos laukos, ir reprezentēti formātā dd.mm.yyyy. Daudz nedomājot es šādu datumu ar strtotime() pārvērtu uz sekundēm un tālāk ar date() uz yyyy-mm-dd. Viss strādāja ideāli. Taču uzliekot skriptus uz cita servera, korektā strādāšana bija kaut kur pazudusi. Sāku meklēt kur ir kļūda. It kā strtotime() atbalsta gan PHP4, gan PHP5. Piebildīšu, ka uz gala servera stāv PHP4. Iemetot aci php.net uzreiz nekādas īpašās atšķirības nepamanīju. Iespējams ne tā skatījos. Tad uzrakstīju mazu skriptu, kurš ņēma dažādi formatētus datumus un pārtaisīja tos par sekundēm un tad atpakaļ par datumu. Skriptu palaidu gan uz PHP5, gan PHP4. Rezultāti sekojoši:

Ievads | PHP5 | PHP4
2007-09-26 | 2007-09-26 | 2007-09-26
26-09-2007 | 2007-09-26 | 2032-02-28
09-26-2007 | 1970-01-01 | 2016-07-30

2007.09.26 | 1970-01-01 | 1970-01-01
26.09.2007 | 2007-09-26 | 1970-01-01
09.26.2007 | 1970-01-01 | 1970-01-01

Kā redzams – PHP5 dd.mm.yyyy formātu labprāt konvertē tā kā vajag, bet PHP4 nē. Tāpēc mācieties no citu kļūdām un atcerieties, ka maģiskā funkcija strtotime() strādā dažādi uz dažādām PHP versijām.

Go to Top