Šifrování PHP skriptů Mozektevidi.net - Mozektevidi.net.

Šifrování PHP skriptů

Jednoduchý tip pro zabránění lehkého čtení zdrojového kódu php scriptu. Fce eval, base32, base64_encode, base64_decode, gzdeflate, gzinflate. Bezpečnost php kódu na prvním místě.

image of Šifrování PHP skriptů

Zabránění lehkému čtení php kódu

php

Není to nic složitého, lepší než nic, sám to tak používám u připojení k databázi. Když si někdo zobrazí zdrojový kód třeba přes php injekci, bude muset udělat o krok víc :-)

Zdroják řekne víc


<?

$sifra2 
"mozektevidi.net"// co chceme zakódovat
$heslo2 base64_encode("$sifra2"); // co z toho vznikne.
echo $heslo2// bW96ZWt0ZXZpZGkubmV0
// dostaneme šifru zpět
$heslo "$heslo2";
$sifra base64_decode("$heslo");
echo 
$sifra// mozektevidi.net
?>

Drobné vylepšení

Další vylepšení spočívá ve php funkce gzdeflate a gzinflate
Opět řekne zdroják více

<?

$kod 
"mozektevidi.net"// co zakódujem
$sifra   gzdeflate("$kod"9); // kodování
echo $sifra// ??J?.I-?L???K-
$rozkodujem gzinflate("$sifra"); // mozektevidi.net
echo $rozkodujem;
?>

Další vylepšení

Oboje funkce se mohou libovolně kombinovat a dávat několikrát za sebou. Ať se v tom pak někdo vyzná. Např fce $zakodovane = gzdeflate(gzdeflate(gzdeflate(gzdeflate($kod)))); nevypadá moc nadějně. Nevíme kolikrát je to zakódované, pak se to těžko rozkóduje. Důležité je zálohovat původní skripty ;-)

Poslední tip

Takto zakódovaný řetězec je string, takže je potřeba ho spustit. To obstará fce eval

Tak to je vše, čao


autor článku OS | datum publikování 2.únor.2007 12:16 | služby a články co mohou být užitečné služby |

Kometáře

#1 BST wwwblog.vyvojar.cz/bst

Nevím, nakolik pomůže k utajení předat čtenáři šifrový text včetně přesného návodu k dešifrování. :-D reaguj

datum 02.02.2007 13:21

unknown unknown

#2 MzK wwwmozektevidi.net

TO BST: Důležitý je ten závěr. Třeba když si někdo zobrazí tvůj php soubor kde bude eval('bW96ZWt0ZXZpZGkubmV0') a v tom je právě heslo k DB nebo nastavení db. Lepší než aby byl pouze v plain textu. reaguj

datum 02.02.2007 14:35

unknown unknown

#3 SpeedyGT wwwwww.speedygt.ic.cz

To mnoho násobný zakodování různejma šiframa vypada bezpečně, utočník těžko bude po večerech testovat v čem to vlastně je:-D reaguj

datum 03.02.2007 12:57

unknown unknown

#4 MzK wwwmozektevidi.net

TO SpeedyGT: Přesně tak. A nejlepší je, že se zašifruje i fce gzdeflate. Takže prakticky ve zdrojáku vidíš eval(bW96ZWt0ZXZpZGkubmV0). A v tom balastu může být zašifrováno třeba desetkrát gzdeflate. Nevíš kolikrát, nedá se svítit. Jediná valná nevýhoda je, že to solidně zatěžuje php servery. U mě na localhostu to není znát, savana se trochu zapotí a IC.CZ spadne :-D reaguj

datum 03.02.2007 14:53

unknown unknown

#5 SpeedyGT wwwwww.speedygt.ic.cz/

TO MzK: omg:-D. Prakticky by šel udělat programek kterej by hledal kombinace rozšifrování určitýho hesla, vypsalo by to vysledky a ten nejpravděpodobnější (ne haldu znaku) by to vyplivlo8-) reaguj

datum 03.02.2007 15:02

unknown unknown

#6 MzK wwwmozektevidi.net

TO SpeedyGT: Napíšu možná někdy časem. Teď není čas a až bude tak bude dělat ten script na přihlašování a odhlašování do naší školy abychom se umístili do top žebříčku SMIL reaguj

datum 03.02.2007 16:31

unknown unknown

#7 etrix www

Vždyť "bW96ZWt0ZXZpZGkubmV0" není php kód, tak jak ho má eval() spustit? reaguj

datum 19.04.2007 01:03

unknown unknown

#8 MzK wwwmozektevidi.net

TO etrix: Věř mi, že to funguje. Sám to používám. Skript se pouští takto: eval(gzinflate(base64_decode($kode))); reaguj

datum 19.04.2007 08:18

unknown unknown

#9 etrix www

TO MzK: Můžeš mi sem dát funkční příklad, ve kterém se zkódují i ty funkce? Ať zkouším co zkouším, tak to nedělá co bych čekal. reaguj

datum 19.04.2007 12:40

unknown unknown

#10 Nobelicek www

Nebylo by jednodusi php zkompilovat a spoustet jako binarku? To ti pak nikdo php neprecte ani kdyby se tisickrat dostal na server :) Natoz aby z toho dostan nejake hesla pro mysql. reaguj

datum 19.04.2007 12:48

unknown unknown

#11 Nobelicek www

Nehlede na to je to jeste rychlejsi nez pouzivat php s interpretem reaguj

datum 19.04.2007 12:48

unknown unknown

#12 MzK wwwmozektevidi.net

TO etrix: Dobře, zde je moje připojení (databaze.php) na localhost:
<?
eval(gzinflate(base64_decode('
DdLbcqIwAADQX+lb734DSFSDGdlOBENAQLlZ4GUHJMQLBEMQhK/ffsGDSG/
/fL//zkraceno!!
')));
?>
TO Nobelicek: I ze zkompilovaného PHP jde dostat část původního. Nemá to jenom výhody. reaguj

datum 19.04.2007 13:12

unknown unknown

#13 Nobelicek www

Samozrejmne. Nejvetsi nevyhoda kompilovaneho php je ze kompiler je placeny :) nasel jsem i nejake free ale ty jsou celokem o nicem :) Ale kdyz uz chceme mit web jako binarku tak uz byh radsi pouzil c++ nebo perl. reaguj

datum 19.04.2007 13:14

unknown unknown

#14 Nobelicek www

To MzK tvoje sifra je velmi rozumna, protoze sofrovani ktere si pouzil je sofrovany pomoci jedinecneho klice serveru :) Takze kdyz si to bude nekdo chtit rozsifrovat na jinem serveru dostane holy nesmysl :) reaguj

datum 19.04.2007 13:15

unknown unknown

#15 MzK wwwmozektevidi.net

TO Nobelicek: Použil bych Javu. V tom je třeba abclinuxu.
TO Nobelicek2: Tím si nejsem jistý. Ten skript funguje na minimálně na 2 serverech. U mně doma na localhostu i na savaně. Normálně celý text převedu do base32 (to není šifra, jen nahrazení znaků!. Pak se to zagzipuje. a nakonec přes eval spustí. reaguj

datum 19.04.2007 13:41

unknown unknown

#16 Nobelicek www

Mas pravdu sem se spletl :) Zamenil sem si to s funkci crypt. reaguj

datum 19.04.2007 13:44

unknown unknown

#17 Nobelicek www

Jinak java c++ c cokoli je pouzitelne. Javu neumim tak bych ji nepouzil :) reaguj

datum 19.04.2007 13:45

unknown unknown

#18 etrix www

TO MzK: No to jsi mi moc nepomohl, když je to zkráceno, tak to fungovat nebude. Prosimtě zkus to ještě jednou a pak už dám pokoj :-)
Kompletní zdroják (včetně zakódování a dekódování), kde bude zakódováno třeba echo "ahoj";, nebo cokoli jinýho. reaguj

datum 19.04.2007 13:47

unknown unknown

#19 MzK wwwmozektevidi.net

TO etrix: OK. Mohl bych být za to placenej, ne? :-D
$kod = "echo \"ahoj\";"; // co zakódujem (echo "ahoj";)
$sifra = gzdeflate($kod, 9); // kodování
$rozkodujem = gzinflate($sifra); // rozkoduji
eval($rozkodujem); //spustím napiše ahoj reaguj

datum 19.04.2007 13:52

unknown unknown

#20 Nobelicek www

Jeste tajkova pozznamecka gzdeflate neni kodovani ani sifrovani ale komprimace gzipem :) A gzinflate je opet dekomprimace :) Tim padem mu to nemusi fungovat ze pokud na serveru na kterem to skousi spustit neni naisntalovany knihovny gzipu. At se podiva do phpinfo. reaguj

datum 19.04.2007 14:02

unknown unknown

#21 MzK wwwmozektevidi.net

TO Nobelicek: Jj, výše jsem psal: Pak se to zagzipuje. a nakonec přes eval spustí.: Vím že to není kódování v tom php komentáři se mi to vecpalo ani nevám jak. reaguj

datum 19.04.2007 14:12

unknown unknown

#22 etrix www

TO MzK: Jenže v tomhle nekóduješ tu funkci gzdeflate. Myslel jsem si, že se zakóduje i ona a eval tu rozkódovanou funkci hned spustí. Myslel jsem to nějak takhle, jenže to nevypíše vůbec nic:

<?
$x = base64_encode('echo "ahoj";');
echo $x;
echo '<br>';
echo base64_decode($x);
echo '<br><br>';

$x = base64_encode('base64_decode("ZWNobyAiYWhvaiI7");');
echo $x;
echo '<br>';
echo base64_decode($x);
echo '<br><br>';

echo "<br>";
eval(base64_decode($x));
?>

Pokud do eval dosadím místo base64_decode($x) jen výstup z base64_decode($x), tak to funguje. reaguj

datum 19.04.2007 14:48

unknown unknown

#23 etrix www

Každopádně to je stejně jen ochráněný proti přímýmu přečtení, jinak si to může rozkódovat kdo chce kdy chce. reaguj

datum 20.04.2007 12:37

unknown unknown

#24 MzK wwwmozektevidi.net

TO etrix: Přesně. Ale tento trik není moc rozšířený, takže ho málokdo zná. Je to vhodně, třeba kdyby si někdo pujčil můj notebook a myslel si, že si přečte heslo v plaintextu LOL reaguj

datum 20.04.2007 17:17

unknown unknown

Nové kometáře nejsou povolené.