views:

4450

answers:

9

First of all, I'm not looking for miracle... I know how PHP works and that there's not really way to hide my code from the clients without using encryption. But that comes with the cost of an extension to be installed on the running server.

I'm looking for something different though... I'm not looking to encrypt my code or even obfuscate it. There are many PHP scripts without encrypted/obfuscated code but they are commercial applications. For instance, vBulletin and/or IP.Board forum applications.

I just want to know what approach do these guys use for their applications...

I'm also open to any other suggestions.

Please note that I'm a single person and not working for a company. My product is also very specific, it won't sell that much. I just want you guys to know that I can't afford to consult a legal professional either to sue someone or prepare a commercial license. I'm just looking for a simple way to protect my simple product, if it's indeed possible, somehow...

+1  A: 

They distribute their software under a proprietary license. The law protects their rights and prevents their customers from redistributing the source, though there is no actual difficulty doing so.

But as you might be well aware, copyright infringement (piracy) of software products is a pretty common phenomenon.

Eran Galperin
+7  A: 

Obfuscating things can only inconvenience your legitimate, law-abiding customers, while the people who would would rip you off are not your target paying customers anyway. (edited out other thoughts about obfuscation)

Another suggestion for protecting your software: create a business model in which the code is an incomplete part of the value of your offering. For example, sell product licenses along with access to some data you manage on your site, or license the product on a subscription model or with customer support.

Designing a EULA is a legal matter, not a coding matter. You can start by reading some EULA text for products and websites you use. You might find some interesting details!

Creating a proprietary license is is highly flexible, and probably a subject beyond the intended scope of StackOverflow, since it's not strictly about coding.

Some parts of a EULA that come to mind:

  • Limiting your liability if the product has bugs or causes damage.
  • Spelling out how the customer can use their licensed software, for how long, on how many machines, with or without redistribution rights, etc.
  • Giving you rights to audit their site, so you can enforce the licenses.
  • What happens if they violate the EULA, e.g. they lose their privilege to use your software.

You should consult a legal professional to prepare a commercial EULA.

edit: If this project can't justify the expense of a lawyer, check out these resources:

Bill Karwin
Consulting a legal professional for my needs would be insane. I can't afford something like that nor will my product sell that much lol. It's a simple product but I wanted to protect it somehow.
Nazgulled
OK, fair enough. I know a small project can't afford that, I didn't know if you were working at a large company or not.
Bill Karwin
You are right, I should have stated that :)
Nazgulled
+4  A: 

You could use a php compiler:

Roadsend

phc

grepsedawk
Seems like nice tool but the FastCGI thing is holding me back a bit and on Roadsend forums they stated that, for instance, on phpBB, it needs to be first executed without compiling so the databases are created and the config.php file is created. I run the risk that my code may not work properly.
Nazgulled
Both your links go to the same place.
Rizwan Kassim
fixed. Apprently not putting http:// in front of the link was causing the problem.
grepsedawk
A: 

@Eran Galperin

Yes, but I know that they don't simply apply a proprietary license. I just don't know the details... That's what I want to know, along with the pros and cons.

The problem is that I can't do the same to my software, for various reasons... One of them is that I'm a single person, not a company. I don't have the power nor the resources necessary to prosecute someone. And in my country, it would take time to sue somebody over this...

@Bill Karwin

Like I said on my first post, I don't want to use obfuscation because there's really no point in doing so. Well, actually, the only reason I see to use obfuscation has nothing to do with preventing other people from using the script without paying. Obfuscation could be nice if you want to prevent your clients from messing your code and then "force you" to support them. But this is not really the issue here.

About the EULA thing, it's basically what Eran Galperin said and my answer to him also applies here.

Nazgulled
Those should be comments.
LiraNuna
+6  A: 

You need to consider your objectives:

1) Are you trying to prevent people from reading/modifying your code? If yes, you'll need an obfuscation/encryption tool. I've used Zend Guard with good success.

2) Are you trying to prevent unauthorized redistribution of your code?? A EULA/proprietary license will give you the legal power to prevent that, but won't actually stop it. An key/activation scheme will allow you to actively monitor usage, but can be removed unless you also encrypt your code. Zend Gaurd also has capabilities to lock a particular script to a particular customer machine and/or create time limited versions of the code if that's what you want to do.

I'm not familiar with vBulletin and the like, but they'd either need to encrypt/obfusicate or trust their users to do the right thing. In the latter case they have the protection of having a EULA which prohibits the behaviors they find undesirable, and the legal system to back up breaches of the EULA.

If you're not prepared/able to take legal action to protect your software and you don't want to encrypt/obfuscate, your options are a) Release it with a EULA so you're have a legal option if you ever need it and hope for the best, or b) consider whether an open source license might be more appropriate and just allow redistribution.

Jim OHalloran
+4  A: 

I have not looked at the VBulletin source code in some time, but the way they used to do it around 2003 was to embed a call to their server inside the code. IIRC, it was on a really long code line (like 200-300+ chars long) and was broken up over several string concatenations and such.

It did nothing "bad" if you pirated it - the forum still worked 100%. But your server's IP was logged along with other info and they used that to investigate and take legal action.

Your license number was embedded in this call, so they could easily track how many IPs/websites a given licensed copy was running on.

Alarion
I see... That's easily edited out from the code though. But thanks for the insight.
Nazgulled
indeed it is, if you know what you are looking for. A friend of mine found it and pointed it out to me. It was not anywhere near easy to find and took several minutes for both of us to figure out just what the heck the code did. :)
Alarion
But you did find it! If someone really wants it, they will find it eventually...
Nazgulled
Yeah they can find it, but what you can do also is sprinkle it through the application to call that function, from time to time. Give them more work to have it operate.
jtyost2
exactly. If you don't want to obfuscate or compile or otherwise "hide" your source code, there is really little else you can do. There is a trade off you have to deal with. Either leave source code open and risk losing more sales, or obfuscate and *hopefully* get more sales.
Alarion
What if part of the embedded call was to download a core file (class) that would render the rest of the CMS useless without it? Of course this could be mirrored, but by then the IP is logged and its too late? And then what happens if the host site is down? I'm still not sure there is a complete solution to preventing PHP piracy.
Talvi Watia
A: 

The only way to really protect your php-applications from other, is to not share the source code. If you post you code somewhere online, or send it to you customers by some medium, other people than you have access to the code.

You could add an unique watermark to every single copy of your code. That way you can trace leaks back to a singe customer. (But will that help you, since the code already are outside of your control?)

Most code I see comes with a licence and maybe a warranty. A line at the top of the script telling people not to alter the script, will maybe be enought. Self; when I find non-open source code, I won't use it in my projects. Maybe I'm a bit dupe, but I expect ppl not to use my none-OSS code!

qualbeen
A: 

If you can't create a "cloud app" that you host yourself and they access via the Web, then you could look into creating a virtual appliance using a virtual server (from VMWare, Parallels, Sun, etc) and install a "lite" version of Linux on that. Put your PHP code in the virtual environment and install the virtual machine on their server. Make sure to create a way to prevent loading into root. Of course, this would involve physically visiting the client yourself.

+1  A: 

See SD PHP Obfuscator. Handles huge systems of PHP files. No runtime requirements on PHP server. No extra runtime overhead.

Ira Baxter
Is there no free version program like that one?
AntonioCS