Autor | Zpráva | ||
---|---|---|---|
Werewolf Profil |
#1 · Zasláno: 28. 12. 2009, 15:38:22 · Upravil/a: Werewolf
Zdravím.
Potřeboval bych uchránit PHP kód před přečtením (myslím, že není nutné, abyste věděli proč). Nemáte s tím někdo, prosím, zkušenosti? Děkuji všem |
||
DoubleThink Profil * |
#2 · Zasláno: 28. 12. 2009, 15:40:39
Před kým?
|
||
Jan Tvrdík Profil |
#3 · Zasláno: 28. 12. 2009, 15:41:34
Werewolf:
Nechápu jaký kód chceš utajit? HTML? JS? PHP? |
||
Werewolf Profil |
#4 · Zasláno: 28. 12. 2009, 15:47:47 · Upravil/a: Werewolf
DoubleThink:
Třeba před těmi, kteří používají můj skript na svém serveru. Jan Tvrdík: PHP, samozřejmě. Doplněno [#1]. |
||
Jan Tvrdík Profil |
#5 · Zasláno: 28. 12. 2009, 16:13:25
Werewolf:
A jak se k tomu skriptu dostali? Co myslíš přečtením PHP kódu? |
||
Werewolf Profil |
#6 · Zasláno: 28. 12. 2009, 16:35:07
Myslím tím, že někdo bude využívat můj skript na svém serveru.
Jen nechci, aby ten kód mohl někdo číst nebo ho dokonce upravit. Jde to nějak, kromě nějaké šifry (třeba base64) + eval? |
||
Str4wberry Profil |
#7 · Zasláno: 28. 12. 2009, 16:50:30
Můžeš si vytvořit šifru vlastní, ale stejně se nevyhneš tomu, že si kód s různou obtížností někdo rozluští.
|
||
joe Profil |
#8 · Zasláno: 28. 12. 2009, 16:56:51 · Upravil/a: joe
Použij ionCube. Rozšifrování téměř nemožné.
A nezapomeň si udělat zálohu toho nešifrovaného :-) |
||
Werewolf Profil |
#9 · Zasláno: 28. 12. 2009, 19:31:57
Díky. Checknu to a ozvu se ;-)
|
||
Werewolf Profil |
#10 · Zasláno: 28. 12. 2009, 20:20:32 · Upravil/a: Werewolf
Str4wberry:
Teď jsi mě přivedl na nebezpečně náročné hloubání. Dovolím si <ot>: Jak se definuje základní programovací jazyk systému, když ještě není nic definováno? Abychom mohli definovat definici, musíme nejdříve definovat definici. Tak je to i s rekurzí. Je tedy možné, že by šlo zašifrovat šifru, která by k rozšifrování sama sebe použila sama sebe? Tím se dostáváme do nekonečného cyklu. Jde to tedy nějak, aby byla definice té funkce zašifrována tou funkcí nebo něčím, co se prostě nedá rozšifrovat? Protože kód nelze rozšifrovat bez „znění“ šifry. </ot> joe: Nevidím způsob, jak být připraven na to, že se nebude ionCube Extension nacházet na serveru, na němž můj skript poběží. Edit: Kdo prováděl nepravosti s formulářovým políčkem? Ten text tam vypadá mnohem kratší :-) |
||
Joker Profil |
#11 · Zasláno: 28. 12. 2009, 21:26:19
Werewolf:
„Jde to tedy nějak, aby byla definice té funkce zašifrována tou funkcí/něčím, co se prostě nedá rozšifrovat?“ Z principu nedá. Minimálně na poslední úrovni z toho musí vzniknout sekvence instrukcí pro daný procesor, které se budou dát odchytit a analyzovat. Ono ale nejde až tolik o možnost či nemožnost takového útoku, jako spíš o jeho ziskovost. Když útok bude co do času, vědomostí a vůbec prostředků podobně náročný jako napsání celé té aplikace znovu, nikdo nebude mít důvod to dělat. |
||
Werewolf Profil |
#12 · Zasláno: 28. 12. 2009, 21:42:28
Joker:
Takhle jsem nad tím nepřemýšlel... Takže stačí napsat si nějakou vlastní funkci a celý kód obalit evalem? |
||
Joker Profil |
#13 · Zasláno: 28. 12. 2009, 21:57:30
Werewolf:
Tak záleží, jak je ten kód cenný. Možná by stačil jen nějaký obfuskátor, který by znečitelnil názvy funkcí. |
||
DoubleThink Profil * |
#14 · Zasláno: 28. 12. 2009, 22:50:50
Werewolf:
„Jak se definuje základní programovací jazyk systému, když ještě není nic definováno?“ Napíše se v instrukčním strojovém kódu procesoru. „Je tedy možné, že by šlo zašifrovat šifru, která by k rozšifrování sama sebe použila sama sebe?“ Ne. Proto kryptografie používá už pár set let šifrovací metody založené na tajném klíči. Smiř se s tím, že to nejde bez nestandardního nástroje na serveru - to platí i u předkompilovaných PHP skriptů. |
||
Werewolf Profil |
#15 · Zasláno: 29. 12. 2009, 08:55:31
DoubleThink:
Asi budu muset... Joker: Dobrá. Zašifruji obfuskovaný kód :-) |
||
ninja Profil |
#16 · Zasláno: 29. 12. 2009, 10:59:04
Werewolf: nemáte lepší vytvořit API? Pak vlastní kód nikdo neuvidí, ale každý bude moci využít.
|
||
vynalezce Profil |
#17 · Zasláno: 29. 12. 2009, 12:15:35 · Upravil/a: vynalezce
Je tu i jeden další problém:
Kdo z vás si dá na web kód, který je upraven tak, aby byl co nejnečitelnější? Už proto, že tím autor asi chtěl něco utajit, bych si takový kód na web nedal... Očekával bych v něm chyby, zadní vrátka nebo něco ještě nepříjemnějšího (PHP může spouštět příkazy v příkazové řádce). EDIT: Tvoje snaha utajit kód navíc upozorní hackery, že si bezpečností aplikace nejsi jist nebo chceš něco schovat. |
||
mckay Profil |
#18 · Zasláno: 29. 12. 2009, 13:14:12
vynalezce:
„Očekával bych v něm chyby, zadní vrátka“ No - ono také proč třeba zadní vrátka ne. Je to běžnou praxí u pár volně stažitelných (rozsáhlejších) skriptů. Někteří webdesignéři dokonce do svých prací umísťují speciálně vstup pro ně pod heslem (což mi nepřijde na škodu, pokud nemá k tomu heslu přístup ještě někdo jiný). „Tvoje snaha utajit kód navíc upozorní hackery, že si bezpečností aplikace nejsi jist nebo chceš něco schovat.“ Možná je upozorní, ale na druhou stranu, třeba chce schovat kód jen kvůli svému geniálnímu nápadu :-), který nechce všem ukázat. Mimo to bych také rád zmínil, že se Werewolfa vůbec nezastávám.:-) ninja: Jestli chápu správně, jak by takové API tohoto druhu mělo fungovat (třeba Iframe, nebo něco podobného), řekl bych, že to není zrovna nejlepší řešení. Pokud by se kód stal oblíbeným a všichni by ho chtěli používat (a byl by to kód náročný na databázi i server), mohlo by začít docházet k výpadkům. |
||
vynalezce Profil |
#19 · Zasláno: 29. 12. 2009, 13:23:31
mckay:
„což mi nepřijde na škodu, pokud nemá k tomu heslu přístup ještě někdo jiný“ To se právě zajistí jen těžko... Pokud má někdo botnet tak nemá problém tu hash (jak jinak to heslo ochránit?) prolomit. A až ho prolomí... |
||
Alphard Profil |
#20 · Zasláno: 29. 12. 2009, 13:36:24 · Upravil/a: Alphard
mckay:
„Někteří webdesignéři dokonce do svých prací umísťují speciálně vstup pro ně pod heslem (což mi nepřijde na škodu, pokud nemá k tomu heslu přístup ještě někdo jiný).“ Předpokládám, že heslo je stejné pro všechny důvěřivce, kteří si to stáhnou. A jak se již psalo výše, heslo uvedené v kódu nelze utajit, jeho zjištění jen otázka námahy... Werewolf: Jakákoliv takováto ochrana bude zpomalovat aplikaci. „Třeba před těmi, kteří používají můj skript na svém serveru.“ Proč? Tak buď jim něco poskytne, tak si to mohou přečíst a ověřit, nebo si to nechte na CD v trezoru. U velkých eshopů to dělají třeba tak, že se systémem poskytují i hosting a zákazník se vůbec nedostane na jejich FTP. |
||
mckay Profil |
#21 · Zasláno: 29. 12. 2009, 14:03:00
Alphard:
„jeho zjištění jen otázka námahy...“ Takže při konstrukci typu if(md5(sha1(muj_encrypt(md5($_POST["heslo"])))) =="blkklj23klj3872JKHSA72hjkasdsadA152"){neco_proved();} By se dalo rozluštit? Mě to právě přijde docela bezpečné, získám tím pořádný hash. Prolomení dlouhého hesla v md5 a sha1 několikanásobně kombinovaný + vlastní šifrovací funkce mi přijde, že je prakticky v reálném čase nemožné. Nebo se pletu? |
||
vynalezce Profil |
#22 · Zasláno: 29. 12. 2009, 14:09:03 · Upravil/a: vynalezce
mckay:
„Mě to právě přijde docela bezpečné, získám tím pořádný hash. Prolomení dlouhého hesla v md5 a sha1 několikanásobně kombinovaný + vlastní šifrovací funkce mi přijde, že je prakticky v reálném čase nemožné. Nebo se pletu?“ Směrodatné je, za jak dlouho se při implementaci v C vygeneruje výsledná hash... a s botnetem máš stejně x tisíc vyzkoušených možností za sekundu. |
||
Alphard Profil |
#23 · Zasláno: 29. 12. 2009, 14:10:43 · Upravil/a: Alphard
Několikanásobná ochrana je při útoku hrubou silou k ničemu. Jesti existuje kolizní klíč (nebo přímo heslo) o délce do 8 znaků,
md5() je kvůli krátké délce výstupního hashe podle mě nejslabší článek. Edit, teď o tom ještě přemýšlím (a počítám) a tak rychlé to asi nebude. Nemám zdání, kolik tisíc možností lze vyzkoušet za sekundu. |
||
mckay Profil |
#24 · Zasláno: 29. 12. 2009, 14:15:38
Alphard, vynalezce
Díky, rozšířili jste mi obzory. O těch několika tisících možností/sekunda jsem něco již něco slyšel, ale dosud jsem to asi bral na lehkou váhu. :-) |
||
Časová prodleva: 14 let
|
0