[PHP] Source beveiligen

Pagina: 1
Acties:
  • 240 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Omdat ik al eens eerder last heb gehad van een klant die niet tijdig betaalde en dit in de toekomst te voorkomen wil ik graag de mogelijkheid hebben om mijn code te beveiligen.
Ook voor enkele projecten die ik gemaakt heb en verkoop wil ik niet dat er aan gesleuteld word.

Nou viel mijn oog na wat Google werk op het programma Source Guardian ( www.sourceguardian.com ).
Ik heb de demo versie gedownload en zit erover te denken de volledige versie aan te schaffen. Zend Encoder is ook mooi, maar heeft voor mij een te hoge aanschafprijs.

Heeft iemand ervaring met deze tool of andere soort gelijke tools die betaalbaar zijn? Dan zou ik daar graag meer over willen weten.

Met name of de features van Source Guardian goed werken : ip lock, host lock en time limited.

Acties:
  • 0 Henk 'm!

  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08 15:02
Het is imho geen technisch probleem, misschien zoek je het in een verkeerde hoek door naar een technische oplossing te zoeken? Zo'n situatie lijkt mij meer een vertrouwensbreuk of contract breuk, en dan zou ik het in die richting zoeken en niet daarvoor software inschakelen..

Je kan imho beter zelf een server opzetten die toegankelijk is voor de klant zodat het resultaat wel bekeken kan worden, maar pas de sourcecode uit handen geven wanneer betaald is. (als dit toepasbaar is op je situatie). Een aanvullende manier is om het een en ander in contractvorm te zetten, het is namelijk deel van de overeenkomst tussen klant en bedrijf, misbruik van je code breekt dus het contract en kan je schade verhalen of andere sancties nemen. Of iets dergelijks.

Hopelijk helpt het. Uiteindelijk is het product wat je maakt code en kan men zien hoe je het gemaakt heb, dit kan een groot voordeel zijn alsook nadeel, je kan inzicht geven in delen van code zodat een goed geinformeerde klant processen kan gebrijpen etc. Al de voordelen verlies je ook wanneer je je sourcecode encodeert.

Human Bobby


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 15:39

Gerco

Professional Newbie

* IonCube kan ook PHP code "encrypten" (precompileren naar bytecode) en is niet duur.

Bij IonCube kun je online je script encoden en betaal je dus alleen daarvoor en hoef je geen produkt aan te kopen. Als je weinig klanten hebt is dit een hele goedkope optie (hooguit een tientje of twee voor een vrij grote applicatie). Zie hiervoor de Price guide, SquirrelMail 1.2.7 (30k regels in 177 files) kost bijvoorbeeld eenmalig $30 om te encoden.
Pricing is based on the total amount of code generated for all files encoded, and there is no charge per file!. Charging is only based on the actual code, and pure HTML typically costs virtually nothing. Encoding an archive of 20 HTML files might cost the same or less than one more complicated PHP file.
* Zend Small Business program is ook vrij goedkoop ($395), als je commercieel bezig bent kan dat geen probleem zijn.

[ Voor 68% gewijzigd door Gerco op 25-11-2005 10:50 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Daar heb je zeker een punt. Natuurlijk heb ik daar zelf ook over na gedacht.
Ik vraag in dit topic alleen niet om een andere oplossing maar om het encrypten/encoden van php source files, daar wil ik het dan ook tot beperken.


@ Gerco : maar heb je er ook ervaring mee?

[ Voor 10% gewijzigd door Cartman! op 25-11-2005 10:49 ]


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 15:39

Gerco

Professional Newbie

g00fy schreef op vrijdag 25 november 2005 @ 10:49:
@ Gerco : maar heb je er ook ervaring mee?
Ik heb wat eenvoudige scripts met IonCube geencode en dat werkte prima. Je moet wel de IonCube loader extension op de server (laten) installeren. Dat is ongeveer hetzelfde component als de Zend Accelerator, maar dan niet van Zend :)
Installing the Loader requires no changes to your webserver or php libraries, and can be installed with a one line change to the php.ini file, or on many webservers, installed on demand without any php.ini change at all.
Commercieel heb ik er geen ervaring mee, aangezien het nooit zover is gekomen met mijn php activiteiten, ik heb me op andere dingen gericht.

[ Voor 20% gewijzigd door Gerco op 25-11-2005 10:53 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 16:44

BCC

Dit is toch geen beveiliging? Bytecode kun je toch zo weer terugparsen naar PHP, net als bij Java?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 15:39

Gerco

Professional Newbie

BCC schreef op vrijdag 25 november 2005 @ 10:55:
Dit is toch geen beveiliging? Bytecode kun je toch zo weer terugparsen naar PHP, net als bij Java?
Nee, PHP bytecode is meer te vergelijken met assembly dan met Java bytecode of .NET IL. Die laatste twee zijn inderdaad redelijk makkelijk weer terug te brengen naar hun originele sourcecode. Bovendien gebruiken al die encoders (dus ook die van Zend) de precompiled bytecode manier om te encoden. Het heet dan ook encoding en geen encrypting.

Bij echte encryptie ben je verplicht om de decryptiesleutel mee te leveren omdat PHP de code anders niet kan uitvoeren. Encoding is de veiligste manier om je PHP sourcecode te beschermen waarbij die nog steeds werkt :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
SourceGuardian doet het dus allebei, encoden en encrypten. Daarom leek me die erg interessant. En zeker omdat het ook met een tijdlock gezet kan worden. Kan je iemand bijv. een licentie van 1 jaar aanbieden en daarna kapt ie ook echt.


edit:

Trouwens Gerco, die Zend small business editie is wel leuk, maar het is dus een 1 jaar licentie. Dus elk jaar 400 dollar is dan weer minder interessant imo.

[ Voor 27% gewijzigd door Cartman! op 25-11-2005 11:22 ]


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 15:39

Gerco

Professional Newbie

g00fy schreef op vrijdag 25 november 2005 @ 11:09:
En zeker omdat het ook met een tijdlock gezet kan worden. Kan je iemand bijv. een licentie van 1 jaar aanbieden en daarna kapt ie ook echt.
Dat kunnen al die encoders, SourceGuardian is daar zeker niet uniek in.

Ik ben overigens van mening dat encryptie waardeloos is. Denk maar na: PHP moet de code kunnen decrypten om het uit te voeren. Om dat te doen moet de decryptiesleutel dus ergens bij die PHP code geleverd worden. Als je de cyphertext (de code) en de key beide moet leveren aan de klant had je het net zo goed unencrypted kunnen versturen :)

Dit is precies de reden waarom DRM nooit zal werken, je geeft de cyphertext EN de key aan je mogelijke attacker. Dan is het hooguit even lastig om de boel te decrypten (je weet immers de gebruikte cypher niet), maar het is in het beste geval nog steeds "Security through Obscurity".

[ Voor 27% gewijzigd door Gerco op 25-11-2005 12:24 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Gerco, over het meeleveren van de key.
In Source Guardian word je code eerst ge-encrypt en daarna ge-encode. De key encode je ook al mee dus. Dus je moet em eerst zien te decoden voordat je kunt gaan zoeken naar de key. En als je de key hebt em er weer mee te zien decrypten. Succes ermee, volgens mij lukt dat allemaal zo snel nog niet.

Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Gerco schreef op vrijdag 25 november 2005 @ 10:44:
* IonCube kan ook PHP code "encrypten" (precompileren naar bytecode) en is niet duur.
Wij gebruiken voor ons product de ionCube Encoder (staat geinstalleerd op onze laptop, zodat wij overal software kunnen encoden) en die werkt prima. Ons product is niet bijzonder groot of complex, en wordt prima geencode.
Over de complexiteit: we maken wel gebruik van gdlib, mcrypt, sessies, file uploads en uiteraard een database.

Gerco schreef op vrijdag 25 november 2005 @ 11:38:
Ik ben overigens van mening dat encryptie waardeloos is. Denk maar na: PHP moet de code kunnen decrypten om het uit te voeren. Om dat te doen moet de decryptiesleutel dus ergens bij die PHP code geleverd worden. Als je de cyphertext (de code) en de key beide moet leveren aan de klant had je het net zo goed unencrypted kunnen versturen :)
ionCube maakt gebruik van een eigen loader die je gratis mee mag leveren met je product. Zonder loader kunnen je scripts niet uitgevoerd worden.
Uit de ionCube FAQ
The compiled scripts are now turned into an ionCube Compiled Code Intermediate Format (CCIF). This proprietary format is efficient, and very different to the "known" PHP compiled format. The compiled code and other data is then protected with several layers of encoding and transformation, and turned into binary encoded files.
Daarnaast gaat het er vooral om dat je klanten niet zomaar je product op meerdere vestigingen / webservers / etc kunnen draaien. Misschien lukt iemand met veel ervaring het wel om de uiteindelijke source te redden (wat ik betwijfel!), maar dat is dan ook duurder dan een extra licentie.

[ Voor 58% gewijzigd door JayVee op 28-11-2005 11:14 ]

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 15:39

Gerco

Professional Newbie

g00fy schreef op maandag 28 november 2005 @ 10:07:
In Source Guardian word je code eerst ge-encrypt en daarna ge-encode.
Los van het feit dat dit onmogelijk is (als je de source encrypt, is het geen PHP meer en kun je het dus per definitie al niet meer encoden), is het ook niet waar.
The SourceGuardian™ 5.0 for PHP Encoder protects PHP scripts by compiling PHP source code into a bytecode format and this is followed by encryption.
Ik heb de demo geprobeerd en ik kon nergens een vakje vinden om een encryptiesleutel mee te geven (misschien heb ik niet goed genoeg gekeken hoor, ik heb maar 1 project geencode).

Makkelijk zal het zeker niet zijn (en als het al lukt, heb je nog steeds alleen de bytecode, waar je weinig aan hebt), maar ik blijf erbij dat encryptie (van de bytecode) niets toevoegt als je ook de key erbij levert.

[ Voor 19% gewijzigd door Gerco op 28-11-2005 11:19 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

Verwijderd

Gerco schreef op maandag 28 november 2005 @ 11:15:
[...]

Los van het feit dat dit onmogelijk is (als je de source encrypt, is het geen PHP meer en kun je het dus per definitie al niet meer encoden), is het ook niet waar.

[...]

Ik heb de demo geprobeerd en ik kon nergens een vakje vinden om een encryptiesleutel mee te geven (misschien heb ik niet goed genoeg gekeken hoor, ik heb maar 1 project geencode).

Makkelijk zal het zeker niet zijn (en als het al lukt, heb je nog steeds alleen de bytecode, waar je weinig aan hebt), maar ik blijf erbij dat encryptie (van de bytecode) niets toevoegt als je ook de key erbij levert.
Redelijk zinloos pakket idd. Er wordt een bestand meegeleverd wat het uitvoeren van de code mogelijk maakt. Redelijk hetzelfde als de "javascript encryptie"-pakketen. En vaak ook makkelijk te decrypten, aangezien er geen server module wordt geinstalleerd. Er moet dus in een van de stappen in de source-code een stap worden gedaan waaruit de "plain" code rolt.

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 15:39

Gerco

Professional Newbie

Verwijderd schreef op maandag 28 november 2005 @ 11:22:
Redelijk zinloos pakket idd. Er wordt een bestand meegeleverd wat het uitvoeren van de code mogelijk maakt. Redelijk hetzelfde als de "javascript encryptie"-pakketen. En vaak ook makkelijk te decrypten, aangezien er geen server module wordt geinstalleerd. Er moet dus in een van de stappen in de source-code een stap worden gedaan waaruit de "plain" code rolt.
Dat klopt niet helemaal, hij compileert echt wel naar een bytecode formaat en gebruikt een PHP extension om de boel weer uit te voeren1. Het is dus echt geen "javascript encryptie", maar heeft wel degelijk nut.

Ik betwist het encoding proces ook niet, vele encoders gebruiken dat principe en het werkt gewoon goed (eigenlijk zijn het compilers, aangezien de originele source niet meer in het bestand zit, maar een soort machinecode). Ik zeg alleen dat de encryptie die SourceGuardian toevoegt nutteloos is omdat ze de key erbij moeten leveren om het weer te decrypten (anders valt er weinig te executen).

1. Hij gebruikt dl() om een extensie @runtime te laden uit zijn "ixed" directory. Dit zal in safe mode ook waarschijnlijk niet werken tot de sys admin die extensie installeert. De plain code zul je er echter niet uit kunnen halen, die zit er namelijk helemaal niet meer in.

[ Voor 22% gewijzigd door Gerco op 28-11-2005 11:30 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Heb het even getest, zowel ionCube als SourceGuardian werken niet met safe_mode aan zoals Gerco zegt. Dit is balen want dat is namelijk best een vereiste. Dan maar Zend Encoder eens proberen.
Pagina: 1