11-1 網?保護

OLAObSpUAɭ٬OƱϥΪ̶iLoAiHϥΪkܦhءAҦpG 䤤ϥαKXӫO@AO̱`覡C

YniYKިA@wqAݪ{XۤCpGKʤOӰ]ҦpӤHͬӡBqT^AuOƱ~HoӤJAάOjMAA NiHqȤݪ JavaScript ӹFHKXO@تC@ӨAϥ JavaScript ӫO@AiHױϥΪ̦pUG

`NOAHȤݪ JavaScript Ӷi檺KXO@AOuਾbʡAਾA]KʷơAHAݪ{XӫO@C@ӨAYϥ JavaScriptAæHAݪKXO@ANiHFۭۥ[ĪGC󦹺بϥΫȤݤΦAݪ{Ӷip⨾mӸ`A|b򳹸`C

ڭ̨Ӭݤ@ӳ²檺dҡG

Example]password01.htm^G

bWzdҤAAJTKXA~suKɮסvAиոլݡCMAunA@ˬd JavaScript lXANiHDKXCUŪ̽Цۦ˾\WzlXAçXKXC

ڭ̦Aݤ@ӵyL@ǪdҡAΨFubv[uKXvq{ҡG

Example]password02.htm^G

bWzdҤAAUuKɮסvAAJTbMKXA~sAиոլݡCWzdҪlɦpUG

lɡ]password02.htm^G]ǦϰUYi^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>HKXO@G²檺qKXO@</h2>
<hr>

<script>
function password() {
	username="";
	passwd="";
	while (username=="")		// Get the user's name
		username=prompt('пJjWG', "");
	if ((username!="Roger") && (username != "Jang")) {
		alert("AOڪDHAiJI")
		return;
	}
	while (passwd=="")		// Get the password
		passwd=prompt(username+"AznI\n"+"пJKXG", username+"KX");
	if (passwd!="cs3431")
		alert("KX~AiJI")
	else
		myWin=open("found01.htm", "displayWindow", "width=600,height=200,status=yes,toolbar=yes,location=yes,resizable=yes,menubar=yes,scrollbars=yes");
}
</script>
<a href="javascript:password()">Kɮ</a>

<hr>
</body>
</html>

WzӽdҡAܮeq JavaScript lXNݥXK}At@ؤkAhONJKXisXAHo쯵K}AҦpG

Example]password03.htm^G

bWzdҤAAJTKXA~sAиոլݬO_ѤWzdҪlɡ]pU^ӰXK}G

lɡ]password03.htm^G]ǦϰUYi^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>HKXO@GsXKXO@</h2>
<hr>

<script>
function testEncode(form) {
	seed = 1;
	newStr = encode(form.passwordField.value, seed)
	document.location = newStr+".htm"
}
function encode(inStr, seed){
	seed = parseInt(seed);
	var char, index, newIndex, outStr="";
	var refStr="0123456789abcdefghijklmnopqrstuvwxyz._~ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i=0; i<inStr.length; i++) {
		char = inStr.substring(i, i+1)
		index = refStr.indexOf(char)
		newIndex = index^seed;		// ^: bitwise xor operator
		outStr += refStr.substring(newIndex, newIndex+1);
	}
	return (outStr)
}
</script>
<form NAME="testform" onSubmit=false;>
пJQKXG<input type="password" NAME="passwordField">
<input type="button" NAME="button" Value="d" onClick="testEncode(this.form)">
<font color=white>cs3431</font>
</form>


<hr>
</body>
</html>

ѤWzlXANڭ̬ݱo JavaScript {XA]LkݥXKXάOK}Cڭ̥iHNsXL{g@ӺG

Example]passwordEncoding01.htm^G

bWzdҤAAunJJrAA]wsXѼơANiHݨsXGCWzdҪlɦpUG

lɡ]passwordEncoding01.htm^G]ǦϰUYi^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>HKXO@GpsXKXO@</h2>
<hr>

<script>
function testEncode(form) {
	form.outStr.value = encode(form.inStr.value, form.seed.value);
}
function encode(inStr, seed){
	seed = parseInt(seed);
	var char, index, newIndex, outStr="";
	var refStr="0123456789abcdefghijklmnopqrstuvwxyz._~ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i=0; i<inStr.length; i++) {
		char = inStr.substring(i, i+1)
		index = refStr.indexOf(char)
		newIndex = index^seed;
		outStr += refStr.substring(newIndex, newIndex+1);
	}
	return (outStr)
}
</script>
<form>
JrG<input NAME="inStr" value=cs3431>
<input TYPE="button" Value="===> sX ===>" onClick="testEncode(this.form)">
XrG<input TYPE="text" NAME="outStr"><br>
sXѼơG<input NAME="seed" value=1>
</form>

<hr>
</body>
</html>

oؽsX覡O@²檺umഫsXvAഫqhOھ index^seed]index M seed Bitwise XOR^ӨMwC

OWzoǽdҡAObȤݪ JavaScriptAҥH짹㪺KXκO@CpGݭnO@]ҦpȦ檺btΡ^ANݭnAMȤݪXBΡAo譱Aڭ̷|b ASP `ӶiԲӻC


JavaScript {]pPΡGΩΤ