biztonság
PHP és MySQL adattípus túlcsordulások
Azt ügye tudjuk, hogy a PHP-ben automatikus típuskonverzió van, amire oda kellene figyelni. A PHP-ban a számok ábrázolására 2 típus áll rendelkezésre (+boolean):
– (signed) integer
– (signed) float
Ezek minden esetben előjellel vannak ellátva, így az integer típusban maximum 2^63 érték tárolható egy 64 bites rendszeren, 64 bites PHP-val. Viszont! A MySQL-ben rendelkezésre áll az előjel nélküli változat, az unsigned bigint, ami ugyanezen körülmények között 2^64 tud ábrázolni, előjel nélkül. Így marad egy nagy hézag a kettő között. Mivel a PHP-ban automatikus típuskonverzió van, így az (unsigned big)int átalakul a PHP-ben float típussá, amiből mi semmit sem veszünk észre. A float típussal ügye csak pontosságot vesztettünk.
De mi van akkor, ha a PHP által adott választ egy szigorúbb nyelvvel akarjuk feldolgozni – vagy mert int-et várunk -, erőltetjük az int típust:
echo (int) ((int) PHP_INT_MAX+1); // -9223372036854775808
Akkor az bizony a PHP-ban is túlcsordul, ahogy azt a MySQL-ben is tenné ha signed bigint lenne és ebből mi semmit sem veszünk észre. Ugyanez, automatikus típuskonverzióval:
echo(PHP_INT_MAX+1); // 9.2233720368548E+18
Hogy ez miért okozhat gondot?
Elterjedt szokás, hogy biztonsági okok miatt lehetőleg csak ID-ket (azonosító számokat) küldünk szerver oldalra, mivel ezeket jóval könnyebb szűrni, mint a stringeket. Az adatbázisban pedig az azonosítók legtöbb esetben integer típusok, leginkább unsigned bigint-ek, autoincrement tulajdonsággal. Később pedig a szerver oldali vizsgálatnál – mivel számot várunk és az autotincrement alapból 1-ről indul – lustaságból ezt alkalmazzuk és úgy gondoljuk, hogy ezzel macera nélkül (prepared statements) meg is oldottuk az SQL injection elleni védelmet:
$id = abs($_GET['id']); // barmi nem szamra 0-t ad, ami az alap autoincerement 1-es kezdosorszama miatt nem letezo sorra mutat az adatbazisban
$results = $pdo->query('UPDATE users SET money=money+1000 WHERE id='.$id);
Ok, de eddig még sohasem okozott gondot a túlcsordulás, miért kellene rá figyelnem?
Hát például ezért:
echo (int) PHP_INT_MAX; // 9223372036854775807
echo (int) ((PHP_INT_MAX+1000000)-1000000); // 9223372036854774784
Természetesen ez oda-vissza érvényes, azaz figyelni kell arra, hogy a PHP integer típusa több egész szám tárolására képes, mint a MySQL bizonyos integer típusai. A MySQL persze dob warningot, de ha külön nem kérdezzük meg róla, akkor jó eséllyel nem fogjuk észrevenni PHP-ben.
Sok forráskódban láttam már a fent említett lustaságból alkalmazott szám-konverziós védelmet. A baj az, hogy úgy hiszik elegendő csupán (int) -el erőltetni a típust. Csak hogy az negatív számokat is elfogad, így a túlcsordítással máris pozitív számmá változtathatjuk, ami viszont már tutira létezik az adatbázisban a tipikus autoincrementes megoldásoknál. Kiszámolni pedig könnyű a megfelelő mértékű túlcsordítást okozó számot, hogy a kért ID-t kapjuk eredményül.
Biztonsági mentés profi módon, ingyen: Comodo és EASEUS (ToDo) Backup
Régóta keresgélek olyan programokat, amik a teljes merevlemezt lementik, a számítógép újraindítása és varázslása nélkül.
Miért fontos ez? Mert az egyszerű felhasználó nem tud USB-ről bootolós Linux csodaprogramokkal bitről-bitre lementeni egy komplett rendszert. Neki csak az kell, ha beüt a „ménkű”, akkor a lehető leghamarabb a működő operációs rendszerét kapja vissza az összes dokumentumával. De a mentés folyamata lehetőleg automatikus legyen, a program beszéljen magyarul, tudjon többféle helyre menteni, stb-stb…
Olvass tovább…
Szuper biztonságos csomagtartó
Automatikus indítás tiltása a cserélhető meghajtókon
Automatikus indítás tiltása a cserélhető meghajtókon
Aki Windows XP-t használ, már biztosan találkozott azon állatira idegesítő újítással, hogy kikapcsolt autorun mellett is megjelenik a „mit akarok tenni a CD-vel” ablak. Tuti a legtöbb embert az őrületbe kergeti.
Ennek kikapcsolására 2 lehetőség van:
- registry editorral
- helyi házirendben (mmc-vel)
Registry editorral
1. START menü -> Futtatás -> regedit
2. HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / Policies / Explorer
3. NoDriveTypeAutoRun hexadecimális értékét állítsuk FF-re
+1 idézet a hivatalos dokumentációból:
0x1 Disables Autoplay on drives of unknown type. 0x4 Disables Autoplay on removable drives. 0x8 Disables Autoplay on fixed drives. 0x10 Disables Autoplay on network drives. 0x20 Disables Autoplay on CD-ROM drives. 0x40 Disables Autoplay on RAM disks. 0x80 Disables Autoplay on drives of unknown type. 0xFF Disables Autoplay on all types of drives.
Ezek kombinációjához adjuk össze a hexa számokat.
mmc-vel
- START menü -> Futtatás -> mmc
- Fájl -> Beépül? modul hozzáadása/eltávolítása… -> Hozzáadás -> Csoportházirend (duplaklikk) -> Befejezés -> Bezárás -> OK
- Felhasználó konfigurációja / Felügyeleti sablonok / Rendszer / Automatikus lejátszás kikapcsolása (duplaklikk)
- Állítsuk Engedélyezve értékre
- OK-zások, a konzol beállításait nem szükséges menteni
Forrás: Microsoft Windows 2000 Resource Kit (registry) és saját hosszas túrkálás (mmc)
NTFS jogok, hiányzik a „Biztonság” fül Windows XP alatt
Windows XP
Az NTFS partíción korlátozhatjuk a hozzáférési jogokat, minden extra program vásárlása/telepítése nélkül. Ez nagyon jól jöhet, ha többen is használjuk a számítógépet. Viszont alapértelmezésben a Windows XP-ben el van rejtve a Biztonság fül, így nem tudjuk a megfelelő jogokat szabályozni. Az alábbiakban ennek elővarázsolását mutatom be.
Kikapcsolhatatlan tűzfal (Windows XP SP2-től)
Helyi hálózatban sok problémát okozhat a Windows XP (SP2) beépített tűzfala. Ha már voltunk egyszer tartományi tagok, azzal szembesülhetünk, hogy a tűzfal kikapcsolhatatlan, esetleg még Tartományi rendszergazdaként sem módosíthatunk semmit.
Amennyiben már nem vagyunk tagjai a tartománynak(Windows 2003 SMB): Az alábbi módosítások esetében előfordulhat, hogy csak lokális rendszergazdaként tudjuk végrehajtani. (A bejelentkező képernyőn a helyi számítógépet kell választani)
Amennyiben tagjai vagyunk a tartománynak: Ebben az esetben a tartománykiszolgáló csoportházirendjében hajthatjuk végre a módosításokat az alábbiakban leírtak szerint.
Windows XP SP2 biztonsági figyelmeztetések kikapcsolása
Állati idegesítő lehet, hogy az SP2 biztonsági központja riogat fél percenként. Így kapcsolhatjuk ki:
- START menü / Vezérlőpult / Biztonsági központ
- klikkeljünk a Biztonsági központ riasztási ódjának megváltoztatása linkre, itt konfigurálhatjuk mivel riogathat a Windows