Az én kódom, az én váram

Az én kódom, az én váram

Az én kódom, az én váram

Az én kódom, az én váram... De szép is lenne, ha valóban így lenne. Számos esetben tapasztaltam már olyat, hogy az általam üzemeltetett weboldalról valaki átmásolt szöveges tartalmat, vagy épp egy forráskód részletet. Mivel ezeken a szellemi alkotásokon sokáig dolgoztam, így szerettem volna megvédeni őket. Tökéletes megoldás nincs, de amik közel állnak hozzá azokat most bemutatom neked.

Forráskód nézet letiltása

Az én kódom, az én váram

A "CTRL + U" gomb kombinációval bárki megtekintheti az éppen látható weboldal lerenderelt forráskódját. Ilyenkor lehetőségünk nyílik belenézni más weboldalak HTML, CSS és JavaScript megoldásaiba. Ezt a funkciót teljesen kikapcsolni nem lehet, de elvehetjük a kedvét pár ifjú kalandornak a kódunkban való böngészéstől. Ehhez annyit kell tennünk, hogy megvizsgáljuk, hogy történt-e gomb lenyomás. Ha történt a control gomb megnyomása mellett még milyen gombot nyomtak le. Ha az esetünkben az "u" betűt, akkor egyszerűen megszakítjuk az eseményt.

JavaScript


<script type="text/javascript">
	$(document).ready(function() {
		$(document).keydown(function(event) {
			//ctrl+u (forráskód nézet) tiltása
			if ((event.ctrlKey == true) && (event.keyCode == 85)) {
				event.preventDefault();
			}
		});
	});
</script>

És honnan lehet tudni a lenyomott gomb keyCode értékét?

Az én kódom, az én váram

Minden gomb, amit lenyomunk a billentyűzeten egy keyCode értéket ad át. Ezt természetesen nem kell találgatással kipuhatolni, az alábbi táblázat segtséget nyújt a megértésében.

Key Code
backspace 8
tab 9
enter 13
shift 16
ctrl 17
alt 18
pause/break 19
caps lock 20
escape 27
page up 33
page down 34
end 35
home 36
left arrow 37
up arrow 38
right arrow 39
down arrow 40
insert 45
delete 46
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
a 65
b 66
c 67
d 68
Key Code
e 69
f 70
g 71
h 72
i 73
j 74
k 75
l 76
m 77
n 78
o 79
p 80
q 81
r 82
s 83
t 84
u 85
v 86
w 87
x 88
y 89
z 90
left window key 91
right window key 92
select key 93
numpad 0 96
numpad 1 97
numpad 2 98
numpad 3 99
numpad 4 100
numpad 5 101
numpad 6 102
numpad 7 103
Key Code
numpad 8 104
numpad 9 105
multiply 106
add 107
subtract 109
decimal point 110
divide 111
f1 112
f2 113
f3 114
f4 115
f5 116
f6 117
f7 118
f8 119
f9 120
f10 121
f11 122
f12 123
num lock 144
scroll lock 145
semi-colon 186
equal sign 187
comma 188
dash 189
period 190
forward slash 191
grave accent 192
open bracket 219
back slash 220
close braket 221
single quote 222

Amennyiben szeretnéd végigtesztelni a lehetőségeket a keyCode.info oldalon megteheted.

Ez így rendben van, de kicselezhető

Habár a billentyűzet gombkombinációját ezzel megszűrtük és egyben kizártuk, ennek ellenére ez nem nyújt teljes mértékű biztonságot, de jelentős mértékben eltántoríthat pár kezdő titánt. A kikerülése roppant egyszerű: Az aktuális URL elé írd be, hogy view-source:

Ezzel a megoldással direkt kényszertíjük a böngészőnket arra, hogy felfedje a kérdéses weboldal lerenderelt forráskódját, függetlenül attól, hogy milyen védelmet hivatott ellátni egy JavaScript kód. Forráskód nézetben ugyanis a JavaScript kód nem fut le.

Egyéb más mód lehet még egy HTML DOM Parser alapú bot, amit képes végigjárni egy weboldal összes aloldalát, megnyitni annak forráskódját és tetszőlegesen kielemezni azt. Ebben az esetben szintén nem lesz hatásos a JavaScript alapú védelem.

A másolást, kivágást és beillesztést is lehet tiltani?

Természetesen igen. Méghozzá az alábbi módon:

JavaScript


<script type="text/javascript">
	$(document).ready(function() {
		$(document).keydown(function(event) {
			//ctrl+c (másolás) tiltása
			if ((event.ctrlKey == true) && (event.keyCode == 67)) {
				event.preventDefault();
			}

			//ctrl+x (kivágás) tiltása
			if ((event.ctrlKey == true) && (event.keyCode == 88)) {
				event.preventDefault();
			}

			//ctrl+v (beillesztés) tiltása
			if ((event.ctrlKey == true) && (event.keyCode == 86)) {
				event.preventDefault();
			}

			//ctrl+a (minden kijelölés) tiltás
			if ((event.ctrlKey == true) && (event.keyCode == 65)) {
				event.preventDefault();
			}
		});
	});
</script>

Erre létezik egy másik megoldás is:

JavaScript


<script type="text/javascript">
	$(document).ready(function() {
		//másik megoldás a másolás, kivágás, beillesztés tiltására
		$(document).on({
			copy : function(event) {
				event.stopPropagation();
				event.preventDefault();
			},
			paste : function(event) {
				//event.preventDefault();
			},
			cut : function(event) {
				//event.preventDefault();
			}
		});
	});
</script>

Mi a helyzet a jobb klikk tiltásával?

Az én kódom, az én váram

Még az egér gombnyomásának eseményét is nyomon lehet követni. Az alábbi módon megakadályozhatjuk, hogy ne jelenjen meg a jobb egér gomb lenyomásakor az úgynevezett "contextmenu", mellyel képeket lehetne letölteni.

JavaScript


<script type="text/javascript">
	$(document).ready(function() {
		//jobb klikk tiltás
		$(document).on('contextmenu', function(event){
			event.preventDefault();
		});
	});
</script>

Ez sem teljes értékű védelem, inkább csak elriasztás, vagy nehezítés értékű. Hiszen az F12 gomb lenyomásával előhozható a böngésző konzol nézete, amiben szabadon lehet böngészni a forráskódot és a kép hivatkozására kattintva le is tölthetjük azt. Az viszont mindenképp gátló tényező, hogy a jobb kttintási lehetőség tiltásával a HTML DOM-ban nem fogja automatikusan kikeresni megfelelő sort a böngésző konzolja, tehát mindet végig kell nézni ahhoz, hogy eljusson az illető a kívánt elemhez.

Az én kódom, az én váram

Másolás védelem

Az ebay.com webáruháznál talán már te is észrevetted, hogy ha megpróbálsz kijelölni egy termék nevet és bemásolni azt bárhová, akkor fura mód beleilleszti a termék URL-jét is. Most ezt a kis trükköt fogom bemutatni az előzőleg bemutatott másolásvédelem kód kibővítésével.

JavaScript


<script type="text/javascript">
	$(document).ready(function() {
		//másik megoldás a másolás, kivágás, beillesztés tiltására
		$(document).on({
			copy : function(event) {
				event.stopPropagation();
				event.preventDefault();
				
				event.originalEvent.clipboardData.setData('text/plain', 'Elé fűzött tartalom '+window.getSelection()+' Mögé fűzött tartalom');
			},
			paste : function(event) {
				//event.preventDefault();
			},
			cut : function(event) {
				//event.preventDefault();
			}
		});
	});
</script>

Az "event.originalEvent.clipboardData.setData" függvény segítségével módosíthatjuk az aktuális vágólapot. Akár törölhetjük a tartalmát is. Ezzel azt érnénk el, hogy hiába nyom valaki másolás parancsot, a vágólap beillesztéskor mindig üres lesz. Avagy megtehetjük azt, hogy a meglévő vágólap tartalmát lekérdezhetjük a "window.getSelection()" függvény segítségével és akár hozzáfűzhetünk egyedi tartalmat, ahogyan a példakódban is látható. Webáruházaknál, vagy magazinoknál praktikus megoldás lehet.

Demo letöltése

Leírásaink azon kezdő és haladó programozóknak nyújtanak segítséget, akik már minimális szinten foglalkoztak weboldalkészítéssel. Ha szeretnél jobban elmélyülni a témában, vagy elsajátítani alapokat, még tovább fejlődni, akkor nézz körbe tanfolyam kínálatunkban, ahol a kezdőtől a profi szintig nyújtunk képzéseket a számodra.

Oszd meg barátaiddal is!

Facebook Twitter Linkedin

Elérhetőségeink

  • Címünk: 1139 Budapest, Frangepán utca 3. (1. emelet)

  • Ügyfélfogadás, beiratkozás: Hétfőtől - péntekig: 08:00-15:00

  • Telefonszámunk: 06 70 604 2060, vagy 06 1 4500 110

  • E-mail címünk:

Közösségünk