แนวคิดพื้นฐาน:
เขียนโปรแกรมอิสระสำหรับแต่ละฟังก์ชันหน้าโปรแกรม
แจ้งให้ลูกค้าทราบข้อมูลน้อยที่สุดเท่าที่จะทำได้ทางฝั่งเซิร์ฟเวอร์ของคุณ
อย่าใช้แนวคิดของ "ลูกค้าควรเขียนสิ่งนี้" เพื่อคิดเกี่ยวกับปัญหา
นึกถึงหลายสิ่งให้มากที่สุดเท่าที่จะเป็นไปได้ซึ่งไม่สามารถเกิดขึ้นได้
1. ปัญหาที่เป็นไปได้เกี่ยวกับเว็บเพจแบบไดนามิกแบบโต้ตอบ
1.1 การโต้ตอบประเภทแบบฟอร์ม
1.1.1 บทนำสู่แนวคิด
เมื่อเราโต้ตอบกับผู้เข้าชมแบบฟอร์มที่ใช้กันมากที่สุด (วิธีการโพสต์/รับ/ใส่) แม้ว่ามันจะสะดวกมาก แต่ปัญหามากมายเกิดขึ้นเพราะมัน
แฟล็กอินพุตในแบบฟอร์ม
ใช้เพื่อรับข้อมูลที่ป้อนโดยผู้ใช้เช่น: ชื่อผู้ใช้รหัสผ่านอีเมล ฯลฯ หากคุณไม่ตรวจสอบผู้ใช้ที่ดีผู้ใช้ที่เป็นอันตราย
จะปิดกั้นเครื่องจักรความปลอดภัยบางอย่าง
เพื่อข้ามการรับรองความปลอดภัย ตัวอย่างเช่นการป้อนคำสั่ง HTML มาตรฐานหรือคำสั่ง JavaScript จะเปลี่ยนผลลัพธ์ผลลัพธ์และการป้อนคำสั่ง HTML มาตรฐานในกล่องอินพุตจะ
จะได้ผลลัพธ์แบบไหน? ตัวอย่างเช่นในสมุดข้อความเราป้อนเนื้อหาของข้อความของเรา: <fontsize = 10> สวัสดี! </font> หากไม่มีหน้าจอในโปรแกรมของคุณ
บล็อกคำสั่ง HTML จากนั้นจะเปลี่ยนฟอนต์ "Hello"
ขนาด. การเปลี่ยนขนาดตัวอักษรและสติกเกอร์ในสมุดข้อความบางครั้งก็ไม่ใช่เรื่องเลวร้าย แต่มันสามารถทำให้สมุดข้อความสดใส แต่ถ้าคุณเขียนมันในกล่องอินพุต
Loop ที่ตายแล้วของ JavaScript เช่น:
<ayherf = "http: // someurl" onMouseOver = "ในขณะที่ (1) {window.close ('/')}"> ความตื่นเต้นครั้งแรก </a> จากนั้นตรวจสอบข้อความสำหรับผู้อื่น
เพียงแค่ย้ายแขก
หากคุณย้ายเมาส์ไปที่ "Thousand Thousand Thrilling" เบราว์เซอร์ของผู้ใช้จะตายเนื่องจากการวนซ้ำที่ตายแล้ว
1.1.2 ประเด็นสำคัญในการป้องกัน
(1) ตัวกรองอักขระพิเศษ
([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;) นี่เป็นพื้นฐานที่สุดและได้รับการกล่าวถึงมากกว่าหนึ่งครั้งในหลาย ๆ แห่ง
<scriptLanguage = "vbscript">
subbubotton_onclick
erm1.uusername.value = "" แล้ว
msgbox "ชื่อของคุณไม่ว่าง!", 0+32, "โอ้! ยังเป็นไปไม่ได้"
form1.uusername.focus
exitsub
endif
efform1.upassword.value = "" แล้ว
msgbox "รหัสผ่านของคุณไม่ว่าง!", 0+32, "โอ้! ยังเป็นไปไม่ได้"
form1.upassword.focus
exitsub
endif
erm1.uusername.value = "" แล้ว
msgbox "ชื่อของคุณไม่ว่าง!", 0+32, "โอ้! ยังเป็นไปไม่ได้"
form1.uusername.focus
exitsub
endif
Form1.submit
enddub
</script>
functionisempty (objname)
-
varstr = document.inputform [objname] .Value
vartmpstr = str.replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;, "")
vartmpstr = tmpstr.replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g; "")
return (tmpstr.length == 0)
-
functionCheck ()
-
tf = document.inputform
ข้อผิดพลาด = ""
ถ้า (isempty ("ชื่อผู้ใช้")) ข้อผิดพลาด+= "ชื่อผู้ใช้ไม่สามารถว่างเปล่า/n";
ถ้า (isempty ("รหัสผ่าน")) ข้อผิดพลาด+= "รหัสผ่านไม่สามารถว่างเปล่า!/n"
ถ้า (ข้อผิดพลาด! = "")
การแจ้งเตือน (ข้อผิดพลาด);
return (errors == "")