15. 3. 2006 v sekci webdesign:

Když vám kradou PHP

Imaginární situace. Máte velkého zákazníka, který vlastní síť internetových obchodů. Domluvíte se s ním na přetvoření jednoho z nich a napíšete mu nový internetový obchod se vším všudy. On Váš výtvor vezme a použije na pěti dalších eshopech. Z pohledu autorského zákona na tento krok samozřejmě nemá sebemenší právo. A já se ptám – tušíte, zda existuje nějaké relativně levné řešení, […]

Imaginární situace. Máte velkého zákazníka, který vlastní síť internetových obchodů. Domluvíte se s ním na přetvoření jednoho z nich a napíšete mu nový internetový obchod se vším všudy. On Váš výtvor vezme a použije na pěti dalších eshopech. Z pohledu autorského zákona na tento krok samozřejmě nemá sebemenší právo. A já se ptám – tušíte, zda existuje nějaké relativně levné řešení, které vás ochrání před vaším vlastním zákazníkem (vyjma naší hyperrychlé-justice)?

Je možno uzamčít MySQL databázi, aby se nedala měnit její struktura? Je možno zajistit, aby kód byl nepoužitelný po přenesení na jiný server? Je možno zabránit modifikaci jednotlivých souborů s kódem? Je možné uzavřít zákazníkovi možnost stavět na vašem kódu další části webového obchodu? A to vše s plným vědomím, že člověk, který se o to případně bude pokoušet, bude mít veškerá hesla (FTP, DB, apod.) a dokonce může být i vlastníkem serveru.

Doufám, že existuje… a budu rád za každý odkaz.

Komentáře

15. 03. 06, 08.10

Ahoj,

jedna moznosti jak zabezpecit PHP skripty je Zend SafeGuard. Na serveru musi byt nainstalovany Zend Optimizer – je free a jeho instalace je otazka cca 5min.

Zend SafeGuard mj. dokaze: generovat licencni soubor, casove omezenou verzi, omezeni pouze na specifikovany rozsah IP adres, omezeni na urcity pocet soucasne pripojenych uzivatelu.

Vice informaci najdes tady: http://www.zend.com/products/zend_safeguardhttp://www.zend.com/products/zend_optimizer

2. kutny
15. 03. 06, 08.25

Dát do nějakého konfiguráku napevno název domény a pak to prohnat Zend Encoderem nebo jak se to jmenuje. Problém je ale takový, že toto musí podporovat hosting. Plusem je ale rychlejší zpracování předkompilovaného kódu.

15. 03. 06, 08.30

Viděl bych docela velký problém v ceně. Proto bych si tuto situaci ošetřil smlouvou (i když v českém právním prostředí a s morálním přístupem některých podnikatelů to moc dobře nebude fungovat).

Další řešení vidím třeba v tom, že by si administrace stahovala ze vzdáleného serveru informaci o tom, zda je licence stále platná. Kdyby nebyla, jednoduše zablokuje přístup do admina.

Muselo by se to samozřejmě ošetřit tak, aby zákazník nemohl tuto funkci smazat či upravit v PHP.

Řešení bych viděl třeba v tom, že by si ze vzdáleného serveru načítal informace, které nebudou na straně zákazníka. Bez těchto informací potom bude administrace nefunkční.

4. Jan Menšík
15. 03. 06, 08.33

Ja bych Vam preci jen doporucil ceske soudy. V pripade zmineneho jednani zakaznika staci podat navrh na predbezne opatreni, ktere soud velmi pravdepodobne vyda (a vyda jej rychle, do 7 dnu).

Tim si zabezpecite ze az do vyneseni rozsudku Vas kod nebude moci zakaznik pouzivat.

5. dgx
15. 03. 06, 08.37

[1][2] rozkódovat Zend Safeguard do původního skriptu je věcí vteřiny. Málo se o tom ví, proto se tento „jakožezabezpečovač“ prodává za nekřesťanské peníze.

Stejně tak lze rozkódovat i SafeGuard, ionCube.

15. 03. 06, 08.45

[3] Mas pravdu, tato moznost tu je. Zatim jsem ale nenasel nic lepsiho, krome hostovani na vlastnim serveru bez pristupu ke zdrojovym kodum/DB. Vis o nejakem lepsim reseni nez vyse zminene enkodery? – taky me to zajima.

15. 03. 06, 08.56

Existuje elegantní řešení :) Nepoužívat PHP ;) Proč myslíš, že existuje tolik solidárních projektů pod GPL/Creative Commons/ap. Protože neexistuje způsob, jak pořádně svůj podukt v PHP/ASP ochránit.

15. 03. 06, 09.03

[3] Stejně tak lze rozkódovat i …..ionCube.

Vteřiny? Jak? Někde jsem četl, že to jde, ale je to poměrně zdlouhavé. Dost mě to zajímá, neboť ionCube používám.

15. 03. 06, 09.04

Doporučoval bych dobře sestavenou smlouvu s vysokými sankcemi za podobné jednání klienta. Soud na základě takovéto smlouvy může snadno a rychle vydat předběžné opatření a konání zamezit..

10. Bystro
15. 03. 06, 09.11

V prvom rade musis podpisat s klientom licencnu zmluvu na softver, kde mu taketo praktiky zakazes. Je vobec dnes mozne robit nieco bez zmluvy??
Za druhe, mozes pouzit Zend Encoder alebo eAccelerator (ten je zadarmo). Pomocou $_SERVER[„SERVER_NAME“] jednoducho aplikaciu obmedzis na urcitu domenu, a skriptik zakodujes…

11. Pavel
15. 03. 06, 09.23

– zažalovat ho :( jenže důkazy, soudy, peníze za právníky, atd..

– nepracovat pro velkého zákazníka

– provozovat na vlastním serveru a zakazníkovy dat jen možnost měnit data v databázi (pokud na to přistoupí)

– vytvořit aplikaci jako „open“

Jakmile to bude mit na svém serveru tak si s tím může dělat co chce. A zakodované dekodovat viz [3]

15. 03. 06, 09.45

Zakódovat to celé Zend Encoderem vypadá jako dobrý nápad. Jenže to strašně vadí při údržbě. Už jsem si přepsal soubory na lokálu jejich zazendovanou verzí ze serveru a pracně lovil v zálohách. Kdybych řešil tvůj problém a strašně mi na tom záleželo, asi bych zkusil najít nějakou funkčnost, která se dá prakticky implementovat jako remote přes SOAP.

13. Pavol
15. 03. 06, 09.58

Preco „obchod se vším všudy“ neobsahuje aj hosting na ktory ten „velky zakaznik“ nebude mat pristup?

15. 03. 06, 10.59

Zend SafeGuard ale na rozdíl od Optimizeru zdarma není. Přehled několika nástojů tohoto druhu je v článku
Skrytí zdrojového kódu. Jak píše dgx, rozkódovat to obvykle jde, ale odstíní to alespoň pojídače koláčů.

Ale spíš bych také doporučoval vydat se jinou cestou – jednak to samozřejmě ošetřit smluvně a jednak oficiálně nabídnout licenci použitelnou na víc obchodů. Pokud to klient prodává dál, tak mu oficiálně nabídnout procenta ze zisku.

Pokud už je pozdě, klient je nesolidní, nelegální činnost provozuje a dohoda s ním není možná, tak už je i pozdě na schovávání zdrojáku. Ale chápu, že to je pro příště.

15. 03. 06, 16.33

Měl bych jeden možná dost blbý dotaz.

Ten zákazník si ten eshop u tebe objednal, ty jsi mu ho udělal a on ti za tu práci zaplatil. Nyní je to tedy jeho eshop a může si s ním nakládat jak chce. Nebo ho naopak ty můžeš druhý den střelit několika dalším zákazníkům?

Ty jsi přece do toho nedal nic patentovaného, jen jsi něco udělal jako cvičená opice… Proto moc nechápu, co řešíš.

Svým zákazníkům dávám kompletní zdrojové kódy, nedávám tam žádné sviňárny a pokud se můj eshop objeví někde jinde, vadit mi to nebude. Protože JÁ už jsem za něj zaplaceno dostal, tak co.
Kdyby ho prodával, je něco špatně, ale pokud ho nasadí na vlastní další weby, tak proč ne…

Zakódovávat zdrojový kód je k ničemu, jako zákazník bych si nic takového koupit nedovolil. Byl bych totiž zcela závislý na libovůli tvůrce. Vždy bych zdrojový kód vyžadoval (a jak by taky ne, když bych ho sám platil), aby mi vyrobený web k něčemu byl.

15. 03. 06, 16.58

[15] naprogramovaný kód je z mého pohledu v osobním vlastnictvím programátora, zákazníkovi prodáváš jen jeho užívání (teda alespoň všichni programátoři, které znám)..

nedokážu si představit, že by naprogramování eshopu zaplatilo programátora a všechny okolo hned na první pokus.. teda prodej.. :-)

Jsou v tom stovky hodin práce.. ukaž mi jedinou velkou designérskou společnost, která programuje obchody a weby pro každého zákazníka od nuly.. líbilo by se třeba Radkovi Hulánovi, kdyby některý jeho zákazník začal prodávat F-ART:CMS jen proto, že si ho koupil na svůj web?? ;-)

Programování je pro programátora tvůrčí práce.. na to nepotřebuješ patenty.. (a moc dobře si to uvědomíš, až jednou začneš programovat).

17. Maňas
15. 03. 06, 17.15

[15] Zdrojáky bych dal tak maximálně kamarádům. Obzvlášť když jde o něco tak rozsáhlýho jako je e-shop…

Ja bych to asi resil soudni cestou, z vlastni zkusenosti vim, ze neco cracknout neni problem a uz vubec ne nejaky zakodovany PHP.
Zbytenca opatreni. Kdyby dotycnej chtel, vzdycky si to rozkoduje.

15. 03. 06, 17.56

[16] Tak to holt asi prodávám ten čas, co jsem tomu věnoval :-) Když budeš dělat ve firmě, taky dostaneš zaplaceno za práci a už nebudeš zkoumat, kolikrát ten tvůj kód někdo rozkopíroval. Já si za to řeknu tolik, kolik mi to zabere času, přirozeně :-)

Samozřejmě že už mám své funkce, třídy, postupy… které tam jen vložím a upravím. Kdo by taky neměl…
Ale právě proto, že je má každý, tak na tom není vůbec nic cenného. Programátor má vlastní a neprogramátor s mým kódem stejně neudělá nic!

Jak jsem říkal, kdyby ten zákazník můj program prodával dál, bylo by to jednoznačně na žalobu. Ale jinak mi je to naprosto jedno. Dokonce se své zákazníky do toho snažím vtáhnout natolik, aby alespoň trochu pochopili jak to funguje a aby si některé věci (konstanty) dokázali změnit sami a nemuseli mě volat kvůli každé pitomosti.
Pokud ten celý kód přeberou a ještě si ho upraví, tak přece tím líp, odvedl jsem zřejmě dobrou práci. A zřejmě to opravdu k něčemu bylo.

Prostě za svou práci jsem dostal zaplaceno, o další zakázky není nouze… prodávání cizího je fakt svinstvo, ale jinak nechápu, co se tu řeší.

P.S.: Že je programování tvůrčí práce, vím už 9 let. Třeba na to během dalších 50 let přijdu ;-)

[17] Nevím, jestli bych dal zdrojáky kamarádům, ti si ho přece nezaplatili. Ale zákazníkovi klidně. No, nebudu se opakovat :-)

19. dgx
15. 03. 06, 18.19

[18] dlouho jsem nic tak nesmyslného nečetl :-)

Je zcela v pořádku, pokud dáš zákazníkovi zdrojový kód. O tom tahle diskuze není. Jde o to, jak již bylo řečeno, že zákazníkům se prodávají práva k užívání. Přesný rozsah stanoví smlouva. Zákazník samozřejmě nesmí software používat v rozporu se smlouvou a pokud ve smlouvě vyloženě není napsané, že software může kopírovat na další (třeba své) weby, tak to prostě nesmí. Dokonce ani kdyby to bylo autorovi jedno. A nemá to nic společného s patentama.

> Když budeš dělat ve firmě, taky dostaneš zaplaceno za práci a už nebudeš zkoumat, kolikrát ten tvůj kód někdo rozkopíroval.

Pokud programuješ ve firmě, je držitelem autorských práv tvůj zaměstnavatel, takže sice můžeš zkoumat, kolikrát byl kód prodán, ale je ti to celkem k ničemu.

15. 03. 06, 18.42

Dobrá smlouva je nejlepší ochrana. Pokud smlouva neříká jasně že autor se autorského práva vzdáva tak autorské právo podle zákona zůstává autorovi. Zakaznik nemá právo na použití jiné než kde určuje smlouva.
Pokud smlouva říká něco ve smyslu že autor se autorského práva plně vzdává a předává je objednateli. Pak je držitel autorských práv objednatel a muže s kodem nakládat dle své libovůle může ho i měnit i prodávat dále.

21. llook
15. 03. 06, 20.12

Některé věci lze zakódovat víceméně nevratně – komentáře a identifikátory. Sice se tím nezabrání dalším instalacím, ale předělávat to půjde o dost hůř.
Takže zakódování s obfuskací.

16. 03. 06, 10.14

[18] řekl bych lehce zmatený a popletený příspěvek:

Pokud ten celý kód přeberou a ještě si ho upraví, tak přece tím líp, odvedl jsem zřejmě dobrou práci. A zřejmě to opravdu k něčemu bylo.

To bych opravdu měl být rád? :-)

Nevím co tohle myšlení způsobuje, snad ty GPL/GNU licence, nebo co.

Vývoj e-shopu v našem podání obsahuje stovky hodin práce. Zákazník zaplatí licenci na používání jedné kopie + většinou chce něco málo přiopravit na míru. Řekněme, že za to dá 50000,-. Myslíte, že to zaplatí vývoj tak, aby si zákazník s tím mohl dělat co chce?

23. pangi
16. 03. 06, 11.13

Chcel by som vela, keby som chcel vidiet vzorovu zmluvu, ktoru pouzivate na osetrenie podobnych pripadov ?

24. dgx
16. 03. 06, 12.38

[23] pokud to ve smlouvě není nikterak řešeno, tak je to ošetřeno dostatečně, viz [19]

—-

File, nechceš dát autora a číslo komentáře NAD komentář? Tohle je fakt strašně matoucí…

16. 03. 06, 13.58

[24] – oukej, až přijedu domů z Práglu, tak s tím něco udělám..

26. Kačer
16. 03. 06, 22.56

Myslím že v tomto případě moc šancí nemáš. Protože jsi pravděpodobně nepodepsal smlouvu na vytvoření konkrétního shopu s tím, že skripty nesmí být použity jinde. Z morálního hlediska samozřejmě máš pravdu a zákazník je ten zlej, ale s tím asi nic neuděláš.

Jedině mne napadá taková ochrana mimo šifrování – schovat si tam malinký kousek kódu, který umožní vymazat tvoje soubory, které zákazník použil neoprávněně. Pokud to není programátor tak na to nepřijde odkud se to maže, když smažeš třeba jen funkce.php :))A celý shop jde do …

27. dgx
17. 03. 06, 05.10

[26] Hele, když nemáš o této problematice ani páru, tak si přečti ostatní komentáře. Bylo tu asi 3x napsáno, že pokud smlouva jasně neříká, že „zákazník může“, tak zákazník nemůže.

28. llook
17. 03. 06, 07.56

[26] To bych neradil, AFAIK by šlo o poškozování záznamu na nosiči informací. Ale ještě horší by bylo, kdyby se rozkřiklo, že úmyslně ponecháváš backdoory (zadal bys zakázku firmě s takovýmito praktikami?).

17. 03. 06, 09.31

[26] Přečtěte si autorský zákon.

Na ten druhý odstavec [schovat si tam malinký kousek kódu] raději zapomeňte, neboť by jste si přivodil dost problémů…

30. Kačer
18. 03. 06, 16.23

Hm, tak ne, koukám že se můj nápad nelíbí. Samozřejmě vím že se to nedělá, nechávat si tam něco co může poškodit zákazníka, ale taky vím že když na to podepíšu smlouvu tak tam mám že kód se může použít pouze pro xyz a nic jiného.

31. markon
19. 03. 06, 01.28

Já to říkám takhle, od PHP a vůbec webu v podnikání kompletně ruce pryč. Pracoval jsem ve vývojářské firmě v PHP a mohu naprosto jistě říci, že tady peníze prostě nejsou a nebudou. Půl roku práce programátora pro mě byla nejhorší část mého života a již nikdy jí nechci zpátky.

PHP je vynikající jazyk pro lidi, co umí programovat, ale šílenost když máte opravovat něco po někom, kdo v PHP neumí. V PHP lze udělat mnohem výkonnější věci než v J2EE, mnohem rychlejší, levnější a udržovatelnější, ale člověk co takovýto projekt dokáže udělat raději bude dělat v Javě, protože se lépe platí.

05. 04. 06, 22.45

TurckMM/eAcc, anyone?

33. Bronislav Klucka
27. 07. 06, 18.22

Pro vsechny, co se tu ohaneji zakony (a dokonce tu vyzyvaji jine, zby si je precetli, i kdyz tu pisi blaboly) par malych pripominek:

1/ autorstvi jako takove je nezadatelne a nezcizitelne, tzn. nejen, ze vam je nemuze nikdo zcizit, ale ani se jich nemuzete vzdat, pokud byste do smlouvy napsali, ze se jich vzdavate, je minimalne tato cast smlouvy neplatna.
Pletete si vykon autorskych a vykon majetkovych prav
2/ Pokud pracujete v programatorske firme, potom autorem (spoluautorem) jste stale Vy, nikoliv firma (ta ani nemuze byt jako pravnicky subjekt), v pracovni smlouve ale urcite budete mit napsano, ze svolujete s pouzivanim Vasi prace jako dila k vykonu majetkovych prav firmou a popripade se zarazenim Vasi prace do dila souhrneho = firma Vas musi pozadat, ze Vasi praci, za kterou Vas plati muze prodavat :)
3/ Povaha toho, jak muze kupujici nakladat s Vami napsanym software se odviji predevsim od povahy smlouvy, pokud se jedna o licencni smlouvu, potom kupujici neni majitelem Vasi prace, tzn. nesmi ji prodavat apod. (pokud smlouva nestanovi jinak), naopak, pokud pracujete na smlouvu o dilo, potom je majitelem dila (a vlastnikem majetkovych prav na dilo) kupujici a muzi ji napriklad prodavat (pokud neni ve smlouve stanoveno jinak)

Ja osobne to resim tak, ze v kazde smlouve mam paragraf o vykonu majetkovych prav a rozsahu pouzivani software, ktery programuji

B.