tags:

views:

1220

answers:

9

Hi guys

Is there a chance to disable these two things from my site? (View Source) and (Ctrl + C )

please, give me few minutes from your time and help, i'll be much more appreciated

thanks in advance

+17  A: 

This isn't possible. You could try to somehow obfuscate the code, but you need to send something to client, don't you? You could use AJAX calls to load your html. This way, the source that the browser will show could be almost empty. However, there is nothing you can do to prevent an experienced user from viewing everything you are sending to the client. In fact there are so many tools he/she can use to reconstruct the page that any technique you will fight hard to apply, will only delay him/her for a couple of minutes.

Regarding the Ctrl-C you could add javascript to block it, but it is useless, since the user can always disable javascript. In fact many users will find interception of right-click very annoying.

All these could have a meaning if you are building an intranet application or you can ship an integrated browser for users to view the application. With public html, I believe it isn't even worth trying. One solution would be to build your application with flash or another plug-in. This way you can encrypt everything you've sent to the client.

kgiannakakis
U mean enryption
Bhavi
Then what to do please suggest something
Bhavi
No, I mean making the code difficult to read. This is especially true for javascript code. For html you can try loading it with AJAX calls. This will make more difficult, but not impossible, to reconstruct the page.
kgiannakakis
I already have a code in JS but it wont work as user can disable JS
Bhavi
You could also use flash or another plug-in.
kgiannakakis
Sure it is possible. You cannot prevent a sophisticated user from accessing the content, but you can make most browsers, executing JavaScript, prevent selecting text. See http://www.answers.com/topic/yellow-submarine-performed-by-various-artists for an example.
Avi
var isnn,isieif(navigator.appName=='Microsoft Internet Explorer') //check the browser{ isie=true }if(navigator.appName=='Netscape'){ isnn=true }function right(e) //to trap right click button { if (isnn else if (isie return false; } return true;}
Bhavi
@Bhavi: You can't, simple as that. Whatever you're trying to hide should either be store somewhere else than in the HTML, or you should resign yourself to the fact that it's public.
mikek
@Bhavi You seem to have managed to find some ugly (very ugly, it uses navigator.appName of all things) code that attempts to block the context menu. As previously mentioned, this isn't very effective. (It is very annoying though). You cannot stop people from accessing HTML/CSS/JS source code that is delivered to the browser (and it has to be delivered to the browser to work). Accept that fact, and move on.
David Dorward
No matter how hard you obfuscate the code, in the end you will need to have a meaningful DOM tree otherwise the browser won't render it - and once you have a DOM tree, Bugzilla or the Webkit Inspector shows everything.
DrJokepu
Firebug can also show you the DOM tree. It will even allow you to select a portion of the page and show you the corresponding DOM.
kgiannakakis
Well Is there something that we can apply on our CS file for a ASP.net page
Bhavi
kgiannakakis: Yeah I meant Firebug. Not sure why I wrote Bugzilla...
DrJokepu
A: 

It is impossible. But if you really want to avoid copying information, you can generate image with text on it. Of course, Google and other search engines will not index your site information. But sometimes it is the goal :-)

Pawka
Be careful. This approach is usually incompatible with discrimination law (such as the DDA in the UK).
David Dorward
Yes, I know, but different countries have different laws.
Pawka
Well we are Ecommerce Site and SEO is a must for us!!!
Bhavi
Your goals of SEO but also content which cannot be read/copied by Humans are contradictory.
Josh
A: 

If you really don't want to give your code away there isn't much you can do.

Using flash or a java applet will make it a little more difficult, but even this can be decompiled.

Jeremy French
A: 

The best you could do is to obfuscate your javascript. Any encryption will have to let the browser decrypt it. Catch-22.

Hans Malherbe
+4  A: 

It's pretty pointless trying to disable the 'view source' and 'ctrl-c' functionality, as anything you try will be easy to circumvent. You can use some JavaScript to stop the right-mouse button from displaying the context menu, but that's easy for the user to disable.

If it's JavaScript, you can use a JavaScript obfuscation program or compactor which will help to hide your code a bit.

Here's a couple to get you started.

http://www.javascriptobfuscator.com/

javascriptcompressor.com

Vex
But JS can be easily disabled by client on his machine
Bhavi
That is (partially) what "easy to circumvent" means in this context.
David Dorward
I am unable to get you David
Bhavi
+3  A: 

There is no way to stop someone from reading the code you send to the browser. Even if you add browser tricks they could use an app that mimics a browser. The best thing to do is to move important code to the server, where they can't get at it.

Rather compete on other axes - usability, service, first mover advantage, etc than trying to stop someone from stealing your code.

Update: one thing you could do is use Google Web Toolkit, because then you'll be working in Java and your competitor/copier will spend their time deconstructing your Javascript.

What are you trying to protect? HTML/Javascript/images/server locations?

Richard Watson
+1  A: 

If you don't want users to view the code of your webpage then you should write your own web browser and define your own HTML protocol.

But when you create a client application and use SOAP/Web services to send data to those clients, then you will be able to keep the code hidden on anything the client sees. (They would need a debugger to "hack" your application.)

Of course, one way to distribute such an application would be by using Silverlight or Flash. It would still show up in browsers that have Flash or Silverlight enabled but they will not be able to see the code of anything inside the application.

Workshop Alex
You don't even need a debugger to see the source of a web page loaded with ajax or web services : in Firefox, just do CTRL+a on the webpage, right click "View selection source", and voila !
Fabien Ménager
+1 for originality. A little nitpicking: HTML is not a protocol - Usually the top level protocol for transferring web content is HTTP.
l0b0
Fabien, my client would NOT be a website but a full-fledged application written in Delphi/WIN32 or in .NET. The Flash/Silverlight solution would be something in-between such a client application and a web page.
Workshop Alex
+1  A: 

Send the pages as raster images (JPG, PNG, etc.) with area links instead of text xD

fortran
Well this approach may not be SEO friendly
Bhavi
You cannot have everything :-p
fortran
+1  A: 

As others have said, there is no point to doing this, as well as the fact that it is impossible.

It's like a newspaper giving out newspapers, but without letting people take clippings. If they have to read it to know what it is, then can copy it.

Make the newspaper out of steel, they will just use laser to clip bits out, or take a photo.

Make the text invisible, no one can read it.

Rich Bradshaw