Autor Zpráva
korpo
Profil *
Zdravim,

chcem spravit intranetovu aplikaciu, a chcel by som nejako dosiehnut, aby sa nedal okopirovat moj PHP kod, ktory vlastne vytvorim. Pozeral som na nete SourceGuardian, v zasade hladam nieco take, ale free podla moznosti open source
Bezp
Profil *
php kód s souboru s příponou php není vidět takže si ho nikdo neokopíruje
YoSarin
Profil
Bezp
No, vzhledem k tomu, že jde o intranet, kde bude mít přístup na server bůhvíkdo, tak je přípona souboru skoro ukradená... ;)
Bezp
Profil *
No pokud maj lidi přístup na server tak má jednoduše smůlu prostě si ten soubor zkopírují a nějaká příšernost co zamotá kod pomocí nějakého šifrovacího klíče nadělá většinou víc škody než užitku...

no nevím rači si na tom serveru vydupej at ti nikdo nemůže lozit do tvýho adresáře :)
Joker
Profil
Existují ještě věci jako kompilované PHP, ale pokud vím, tak nástroje na jeho tvorbu jsou docela drahé, takže se to vyplatí jen pokud je opravdu drahý i ten kód
YoSarin
Profil
http://radekhulan.cz/item/bcompiler-kompilace-a-ochrana-php-kodu-zdarm a
loyza
Profil
Záleží na úrovni ochrany, pro základní a jednoduchou ochranu není problém naprogramovat něco vlastního. Vyházet bílá místa, změnt názvy proměnných a případně kód nějak zašifrovat a po dešifrování projet funkcí eval. Nicméně není to žádná vysoká úroveň ochrany. Pokud potřebujete ochránit drahý kód tak si pořiďte drahý nástroj.
YoSarin
Profil
loyza
To má dvě zásadní nevýhody:
1) je to k ničemu
2) je to k ničemu
A to proto:
pokud se k tvým zdrojákům nikdo nedostane, tak není potřeba je zabezpečovat, pokud k nim zase někdo má přístup, tak mu tohle může být zcela fuk, jelikož ty kód sice "zašifruješ", ale před jeho posláním do eval ho zase musíš "dešifrovat". Pro člověka, který má ke skriptu přístup pak není problém přepsat eval(desifruj($zasifrovanyKod)); na echo desifruj($zasifrovanyKod); a veškeré "šifrování" tohohle typu je ti k prdu ;)
Mastodont
Profil
Já se tedy v tomto nevyznám, ale je takový problém chránit ty složky s kódem na úrovni NTFS? Přístup jen pro účet, pod kterým běží Apache a hotovo. (+účet pro admina)
Joker
Profil
YoSarin
To má dvě zásadní nevýhody:
1) je to k ničemu
2) je to k ničemu

:-)
"Teoreticky jde o jednu vadu, ale považoval jsem ji za natolik významnou, že jsem ji uvedl hned dvakrát"

Pro člověka, který má ke skriptu přístup pak není problém přepsat eval(desifruj($zasifrovanyKod)); na echo desifruj($zasifrovanyKod); a veškeré "šifrování" tohohle typu je ti k prdu ;)
Ještě je možné psát nepřehledný a komplikovaný kód, který ani nebude nutné šifrovat, protože se v něm nikdo nevyzná :)
YoSarin
Profil
Mastodont
Pořád k tomu má přístup Admin - což je osoba kterou autor kódu vůbec znát nemusí. Začínám mít pocit, že to skoro nemá řešení... Možná to místo v php napsat jako plugin pro apache nebo php v C++ (jestli to jde - v téhle oblasti nemám žádné znalosti)
Joker
"Teoreticky jde o jednu vadu, ale považoval jsem ji za natolik významnou, že jsem ji uvedl hned dvakrát"
Ano, přesně odtama jsem si to propůjčil a upravil. ;)

Ještě je možné psát nepřehledný a komplikovaný kód, který ani nebude nutné šifrovat, protože se v něm nikdo nevyzná :)
Taky pravda - a vůbec nejlepší je napsat kód kterej nefunguje - to pak 100% nikdo krást nebude. :)
nightfish
Profil
Ještě je možné psát nepřehledný a komplikovaný kód, který ani nebude nutné šifrovat, protože se v něm nikdo nevyzná :)
takže stačí vyměnit PHP za Perl a jsme doma :-)
(pro neznalé: Říká se, že Perl je jeden z mála jazyků, který po zašifrování vypadá stejně jako před ním...)
korpo
Profil *
YoSarin
ano o tom som cital, ale popisuju tam nejake problemy (s sql prikazmi to nic nerobi), takze to tak moc nechcem riesit

Bezp
ide o INTRANET, pristup k tomu bude mat milion+1 ludi, plus bude to vo viacerych firmach takze pocet firiem*(milion+1 ludi)

ako som pisal potrebujem nieco ako SourceGuardian (http://www.sourceguardian.com/products/php_encoder.htm), ale aby to bolo free, ten SourceGuardian som dnes skusal a vyzeralo to super aj to plni svoj ucel problem je v cene smiesnych 250$, co nieje moc prijemne
YoSarin
Profil
korpo
No, jestli to instaluješ do tolika firem a bude to používat tolik lidí a dostaneš za to zaplaceno, tak mi 250$ nepřijde zas až tak moc - skoro bych uvažoval o koupi.
korpo
Profil *
YoSarin
prvotne financie su dost obmedzene, a cena toho softwaru nemoze a ani nebude moc vysoka (vzhladom na softy, ktore by to malo nahradit)
+kto vie ci to vobec niekto kupi .. :(
HonzaH2
Profil
nejlépe napsat zcela nepřehledný kód bez zalamování řádků. Do kódu párkrát includnout kód, který bude uložen mimo adresář tohoto kódu, takže když si pak někdo kód zkopíruje aniž by si předem pořádně prostudoval ten nepřehledný maglajz, tak nebude vědět, že se tam něco includuje z jiných adresářů, takže mu po zkopírování bude pár skriptů chybět. A pokud chceš být opravdu brutální, tak skript napiš tak, že pokd ten includovaný soubor bude chybět, tak se začnou mazat všechny soubory na disku, ke kterým budou patřičná práva :-) Případně se skript může pokusit rozeslat pár emailů na policii, blázinec, televizi nova ... s textem "právě jsem ukradl php kód, najděte si mě podle IP adresy". Navíc můžeš includovat nikoliv přímé názvy souborů, ale jejich hashe a tyto soubory budou v adresářích s desítkami dalších falešných souborů aby případného zloděje zmátly a musel je buď zkopírovat všechny nebo zjistit ten hash jednotlivých includovaných souborů a v konečné fázi bych umístil pastičku na myši vedle klávesnice.
Pavel Strejček
Profil
Joker
Ještě je možné psát nepřehledný a komplikovaný kód, který ani nebude nutné šifrovat, protože se v něm nikdo nevyzná :)

Další možnost je psát kód přehledný a jasný a před použitím to nechat projet přes "znepřehledňovač a komplikátor". Buď přes profi nástroj jako Zend Guard dříve Zend Encoder který kód může jak zašifrovat tak znepřehlednit, ale nevýhou je, že je to rozšířené řešení a tudíž prolomitelné na počkání, nebo si napsat svoji utilitku.

Pokud má někdo přístup na server tak už z principu skripty ochránit nejde, dá se jenom více či méně znepříjemit úsilí vynaložené na rozlousknutí, ale když někdo bude opravdu chtít, tak ty původní zdroje v přijatelné podobě prostě dostane.
krteczek
Profil
Abychom si to ujasnili, píšeš aplikaci určenou pro intranety, prostě ji následně prodáš třeba 10 firmám s 1 licenci každé firmě. O co jde dál? Chceš bojovat proti softwarovému pirátství ve firmách? Pokud je to taková specifická věc, dej si tam třeba časový zámek, s tím že to začne vyhazovat nějakou specifickou "chybu" odblokování provedeš sám v rámci údržby (přeci jen autor o tom ví nejvíce, že). Těch chyb doporučuji nastavit více a podle různých klíčů, (počet záznamů v db, počet dnů od instalace,...) ale aby se to začlo projevovat nedrive po pul roce ;-)

Ale já s tímhle nesouhlasím. imho je třeba i v licenci specifikovat kdo stim muže narábět a jak a pokud dojde ke změně kodu, nebo jeho předání třetí osobě, atd vysoká pokuta, soud.
YoSarin
Profil
korpo
Teď mě napadlo ještě tohle:
Při instalaci aplikace se vytvoří nějaký soubor, jehož jediným obsahem bude datum vytvoření tohoto souboru, resp. hash toho data.
Pak se smaže ten instalační soubor - tudíž nebude možné znovu vytvořit ten soubor s hashem.
Při přístupu do aplikace by se pak kontrolovalo, jestli souhlasí obsah souboru se zahashovaným datem vytvoření souboru. A pokud ne, tak smůla.

Ale jak tak o tom teď přemýšlím, tak je to asi neproveditelný, resp nefuknční... při kopírování se asi datum vytvoření souboru nemění... nebo jo?

Je to jen taková myšlenka...
Pavel Strejček
Profil
YoSarin
Při přístupu do aplikace by se pak kontrolovalo, jestli souhlasí obsah souboru se zahashovaným datem vytvoření souboru. A pokud ne, tak smůla.

Stačí vyhledat v kódu tu kontrolu, dopsat do podmínky třeba || true a jedeme dál.
Pavel Strejček
Profil
krteczek
Ale já s tímhle nesouhlasím. imho je třeba i v licenci specifikovat kdo stim muže narábět a jak a pokud dojde ke změně kodu, nebo jeho předání třetí osobě, atd vysoká pokuta, soud.

To je pravda, dobrá licence je zapotřebí, ale soud a vysoká pokuta má vždy nejistý výsledek, zvláště když se autor nemusí o zneužití díla vůbec dozvědět.
Jediná spolehlivá ochrana je zajišťovat i webhosting díla a na server nikoho nepouštět.
YoSarin
Profil
Pavel Strejček
Stačí vyhledat v kódu tu kontrolu, dopsat do podmínky třeba || true a jedeme dál
Vida - zase pravda - nějak to vždycky nedomyslím do konce.
one_k
Profil
To je to same jako s JavaScriptem - jak zajistit aby nikdo neukradl vase kody - proste nijak. Bud je mozne ruzne upravovat, ale kdo chce tak to stejne obejde.

Holt to chce pri intranetovy aplikaci aby to behalo pres zkompilovanej program treba v C++, ktery by desifroval vase zasifrovany php scripty a ty provadel. Nemyslim ze by to bylo nejak slozite a klic k desifrovani z toho kazdej neziska..
YoSarin
Profil
one_k
To už možná spíš to jádro samotné napsat v C++ jako modul do apache... či jak se to dělá...
Toto téma je uzamčeno. Odpověď nelze zaslat.