Avatar billede jammerlab Nybegynder
26. oktober 2006 - 16:52 Der er 13 kommentarer og
2 løsninger

Sikkerhed imod kopiering

Hej derude... jeg er godt klar over at man ikke kan forhindre at php koden bliver sednt videre og brugt hvis man har en smule forstand på PHP... men jeg vil nu gerne forsøge at beskytte min kode fra at blive solgt videre uden min vidne om det... eller ihvertfald at produktet bliver forhindret brugt... nogen ideér?
Avatar billede coderdk Praktikant
26. oktober 2006 - 17:21 #1
Køb ionCube Encoder. Hardcode så en unik ID ind i systemet, og lav det så det regelmæssigt checker op mod dit website, om den ID hører til deres IP. Encode kildekoden og distribuér de encodede ionCube filer... Dette kræver at de installerer ionCube-loaderen.

Du kan også skrive det i C og lave et php modul. Ellers samme fremgangsmåde som ovenfor. Dette kræver at de har 100% kontrol over webserveren, da modulet (extension) skal aktiveres på serveren (med mindre ISP'en tillader brug af dl()-funktionen).
Avatar billede arne_v Ekspert
26. oktober 2006 - 21:51 #2
strip kommentarer i koden inden du shipper den til kunden

hvis det er en stor applikation, saa er det ret haabloest at forsoege at tilrette
noget kod euden dokumentation eller kommentarer i koden

er det en lille applikation, saa er der nok graenser for hvor meget energi folk gider
bruge paa at stjaele den
Avatar billede jammerlab Nybegynder
27. oktober 2006 - 09:07 #3
coderdk> det er sikkert en fin løsning men jeg leder efter en der ikke skal koste mig yderligere...
arne_v> mener du bare // comments ?

Er der ikke en smarte sniger løsning i form af noget kode man kunne gemme i resten af koden...
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:27 #4
Tjah, men det er ikke gode løsninger. Hvis du f.eks. laver en kode, der checker på domænenavn:

if ( strpos( $_SERVER['HTTP_HOST'], 'kundedomæne.dk' ) === false )
{
  header( 'location: http://www.ditdomæne.dk/licenseviolation.php?domain=kundedomæne.dk' );
}

Denne checker at domænet indeholder "kundedomæne.dk" - hvis ikke redirecter du til din egen side og oplyser om ulovlighederne ;)

Denne kode kan du gemme som en streng, komprimere den og køre den igennem base64_encode sådan:
    $txt = "if ( strpos( \$_SERVER['HTTP_HOST'], 'kundedomæne.dk' ) === false ) { header( 'location: http://www.ditdomæne.dk/licenseviolation.php?domain=kundedomæne.dk' ); }";
    $txt = base64_encode( gzdeflate( $txt, 9 ) );

Du kører koden og gemmer den resulterende text. Så smider du blot dette rund omkring i din kundes script:

    exec(gzinflate(base64decode("y0xT0FAoLikqyC/WUFCJD3YNCnMNilb3CAkJiPfwDw5Rj9VRUM8uzUtJTcnPfZaXqpeSra6gqWBra6uQlphTnApkVytkpCampBZpKKjn5CcnlmTm51kpZJSUFFjp65eXl+ulZJbA9ernZCan5hWnlmXm54BV6hVkFNgDpRMz82wxrLFWqAUA")));

Så bliver koden kørt...
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:30 #5
Du kan måske endda gøre det lidt mere forvirrende ved at bruge chunk_split når du laver koden:

$txt = chunk_split( base64_encode( gzdeflate( $txt, 9 ) ) );

Så ser koden sådan ud:

exec(gzinflate(base64_decode("y0xT0FAoLikqyC/WUFCJD3YNCnMNilb3CAkJiPfwDw5Rj9VRUM8uzUtJTcnPfZaXqpeSra6gqWBr
a6uQlphTnApkVytkpCampBZpKKjn5CcnlmTm51kpZJSUFFjp65eXl+ulZJbA9ernZCan5hWnlmXm
54BV6hVkFNgDpRMz82wxrLFWqAUA")));
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:31 #6
Eller:

$txt = chunk_split( base64_encode( gzdeflate( $txt, 9 ) ), 30 );

så ser det sådan ud:

exec(gzinflate(base64_decode("y0xT0FAoLikqyC/WUFCJD3YNCnMNil
b3CAkJiPfwDw5Rj9VRUM8uzUtJTcnP
fZaXqpeSra6gqWBra6uQlphTnApkVy
tkpCampBZpKKjn5CcnlmTm51kpZJSU
FFjp65eXl+ulZJbA9ernZCan5hWnlm
Xm54BV6hVkFNgDpRMz82wxrLFWqAUA")));
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:40 #7
Hvis du vil være lidt mere sneaky og lade "piraterne" bruge scriptet, kan du lade koden være:

    if ( strpos( $_SERVER['HTTP_HOST'], 'kundedomæne.dk' ) === false ) {
        echo "<script type='text/javascript'>var i = new Image(); i.src='http://www.ditdomæne.dk/licenseviolation.php?domain=kundedomæne.dk&pirate=<?=$_SERVER['HTTP_HOST']?>';</script>";       
    }

Så registrerer du bare hvem kunden er og hvem piraten er, her ser den "krypterede" sådan ud:

exec(gzinflate(base64_decode("bY/BasJAFEV/5SHFiSCZvclLVoKuFA
1uSpEheZqncWaYeSZK6e/2OxoQCoXu
Lvcuzrl8ggSiBO9iAm/H/XJ3WO7e1a
qqtsfVZl+pjzmo69021Ljbt6W0uSqY
ASLCyXSRxvwJVLcOJnmsA3sBeXpCJf
QQfTG9ebWq6E0ABgRLA6xv5kzJLANO
Y6hRtSJ+ofUwDGnD8kvSHddkI/XsOi
PsbOpbX46zYYt/paaegxHCvMR/X5SF
ynL9cikmGYzsrx8=")));
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:42 #8
Avatar billede jammerlab Nybegynder
27. oktober 2006 - 09:42 #9
Det ser skide godt ud coderdk... det er lige den type løsning jeg ledte efter... jeg afprøver dem lige når jeg for tid og vender tilbage til dig :)
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:50 #10
Ok :)

Der var en fejl i javascriptkoden, den er rettet:

i.src='http://www.ditdomæne.dk/licenseviolation.php?domain=kundedomæne.dk&pirate=$_SERVER['HTTP_HOST']';

Den "krypterede":

exec(gzinflate(base64_decode("bY/BCsIwEER/ZRExFaS5W6MnQU9KLV
5EJLSrXW2TkKytIv6u32FBEARvw8zh
vaEjRBDYOxsi6B8283Q7T3dikWXrw2
K1ycR+BOJyNQUWtn4ZjIuLgCEopeCo
q4BdfgDmpYXeJOSeHAPfHSrBeGN51o
3+tGLaaA8ECgy2sKz1CaNhAhQHnytR
MruxlG3bxgXxlyQrytEEbMhWmsma2J
Vu1s2ajPqVGjjymlH9vSCSifxoTHsJ
dNjnGw==")));
Avatar billede coderdk Praktikant
27. oktober 2006 - 09:51 #11
Bah, der skal jo ikke ' i:

i.src='http://www.ditdomæne.dk/licenseviolation.php?domain=kundedomæne.dk&pirate=\$_SERVER[HTTP_HOST]';

Den "krypterede":

exec(gzinflate(base64_decode("VY/BCsIwEER/ZRExFaS5W6MnQU9KLV
5EJLSrXW2TkKytIv6u32FBKHgbZg7v
DZ0hgsDe2RDB8LRbpvtlehCrLNueVp
tdJo4TELe7KbCw9cdgXNwEjEEpBWdd
BezyCzAvLQxmIffkGPjpUAnGB8urbv
SvFfNGeyBQYLCFda0vGI0ToDj4XImS
2U2lbNs2Loh7kqwoRxOwIVtpJmtiV7
pFN2sy6l9q5MhrRtVf6B8cRTKTP4n5
IIEO+v4C")));
Avatar billede jammerlab Nybegynder
27. oktober 2006 - 16:16 #12
Jeg kan ikke få det til at fungere... det virker fint sådan her:

if ( strpos( $_SERVER['HTTP_HOST'], 'kundedomæne.dk' ) === false )
{
  header( 'location: http://www.ditdomæne.dk/licenseviolation.php?domain=kundedomæne.dk' );
}


men ikke med denne :

exec(gzinflate(base64_decode("y0xT0FAoLikqyC/WUFCJD3YNCnMNilb3CAkJiPfwDw5Rj9VRUM8uzUtJTcnPfZaXqpeSra6gqWBr
a6uQlphTnApkVytkpCampBZpKKjn5CcnlmTm51kpZJSUFFjp65eXl+ulZJbA9ernZCan5hWnlmXm
54BV6hVkFNgDpRMz82wxrLFWqAUA")));

så sker der bare intet
Avatar billede jammerlab Nybegynder
03. november 2006 - 16:26 #13
ved du hvad der kan være galt?
Avatar billede coderdk Praktikant
03. november 2006 - 17:52 #14
hehe mig der tåger, det skal være eval og ikke exec :) (exec kører en systemkommando)
Avatar billede jammerlab Nybegynder
04. november 2006 - 17:41 #15
super så virker det. tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester