Blogi

PHP Hash table -haavoittuvuus

Lukuisista eri kielistä on löydetty hajautustauluhaavoittuvuus. Haavoittuvuuden avulla nettipalvelimen voi kaataa jopa yksittäisen koneen avulla.

Haavoittuvuus perustuu siihen, että esim. PHP:n moottori käsittelee lähetetyn pyynnön hajautustaulujen avulla. Verkkopalvelut toimivat näiden pyyntöjen avulla. Esimerkiksi kun haet meidän sivustolta jotain, ilmestyy osoiteriville ?s=XXXX&lang=fi, jossa “s” on avain ja “XXXX” arvo. Koodissa sitten katsotaan, että löytyykö “s”-avainta ja jos löytyy niin tehdään haku sen arvolla (“XXXX”).

29.12.2011

Lue lisää

Apostrophen kääntäminen helpommaksi

Apostrophe on mainio CMS, joka on rakennettu Symfonyn päälle. Se on kuitenkin vasta lapsen kengissä ja sitä kehitetään pääasiassa P’unk Avenuen johdolla heidän tarpeisiin. Tästä syystä esimerkiksi erilaiset kieliominaisuudet ja useamman kielen tuki on tullut hitaasti järjestelmään, vaikka allekirjoittanut on aktiivisesti patchejä submittaillutkin.

Usean sivun kääntäminen on hankalaa, mikäli kääntäjät eivät pääse aloittamaan aina oletuskielen versiosta, eli esimerkiksi englannista. Tämä ei ole tällä hetkellä enää Apostrophessa mahdollista, koska uusien ominaisuuksien ja parantelujen myötä meidänkin oletuskielimuokkaukset lakkasivat toimimasta.

20.12.2011

Lue lisää

Symfony-saitin suojaus salasanalla

Mikäli käytät sfGuard- JA basic http authentication yhdistelmää esimerkiksi kehityssivustolla, jää Chrome ikuiseen looppiin kysymään salasanoja authentication-popupissa.

Tähän on erittäin yksinkertainen syy. sfGuardin login-sivu palauttaa 401-statuksen, mikäli Symfonyyn ei olla kirjauduttu. Selain tulkitsee sen niin, ettei sivustolle olla kirjauduttu vielä ja kysyy täten salasanoja uudelleen, vaikka ne oikein olisikin annettu.

Voit korjata ongelman lisäämällä sfGuardAuth-moduulin applikaatioosi ja tekemällä sinne normaalin actions-classin (class sfGuardAuthActions extends BasesfGuardAuthActions). Ylikirjoita executeSigninin esimerkiksi näin:

 

public function executeSignin($request)
{
	$r = parent::executeSignin($request);
	$this->getResponse()->setStatusCode(200);
	return $r;
}

20.12.2011

Lue lisää

Full screen iOS-verkkopalvelu

Olen rakennellut viime päivinä iPad-webbisovellusta. Ajattelin jakaa teidän kanssa monta työtuntia syöneen ongelman. Eli miten tehdä full screen -sivusto niin, että:

  1. Saat rekisteröityä iPhonen ja iPadin hiirieleet
  2. Safari ei liiku ylös- tai alaspäin scrollatessa
  3. Normaalit linkit toimivat (tästä tuli yllättäen vaikein kohta).

Aluksi täytyy kuunnella iOS:n hiirieleitä ja muuttaa ne normaaleiksi tapahtumiksi. Näitä on mm. touchstart, touchmove, touchend ja touchcancel. Tarpeelliseksi tulee hiirieleiden ulkopuolella mm. orientationchange (kun käyttäjä kääntää päätettä 90′). Lisää iOS-tapahtumista Applen sivustolta.

20.12.2011

Lue lisää