หากเป็น code ที่มีจุดประสงค์ร้ายคงดูไม่จืดเลยนะครับ :>


หมายเหตุ : อ้างอิงจาก http://www.asp.net/learn/whitepapers/request-validation/

ท่านที่ทำงานด้านพัฒนา Web Application คงรู้จัก Script Attack กันดี
มันคือการแทรกแท็ก html ลงไปเพื่อกำหนดให้การแสดงผลของข้อมูลผิดเพี้ยนไป
และหากเป็นการแทรก script เพื่อก่อกวนระบบคอมพิวเตอร์ แล้วก็อาจสร้างความเสียหาย
ให้แก่ทั้งผู้ให้บริการ และผู้เข้าชมเว็บเพจ

การเตรียมการ
1.ในบทความนี้ขอให้ท่านติดตั้ง Visual Studio 2005/2008 Express หรือ Version ที่สูงกว่านี้ก็ตามสะดวกครับ
2.รู้จักแท็ก HTML


หากท่านยังไม่เข้าใจว่า Script Attack จะมีหน้าตาอย่างไรผมจะขอสาธิตแบบง่ายๆดังนี้

1.เมื่อเรียกโปรแกรม VS ขึ้นมาแล้วให้สร้าง Web Site เปล่าขึ้นมา คลิกที่ ASP.Net Website
ที่ช่อง Location ให้ระบุชื่อตามที่ต้องการแล้วคลิก OK

2.คลิกขวาที่ Solution Explorer ทางขวามือแล้วคลิกที่คำสั่ง Add new item

3.คลิกเลือก Web Form และพิมพ์ชื่อ sample_atkscript.aspx ลงไปท่านจะใช้ชื่ออื่นก็ได้ครับ
ผมคลิกเพื่อ "ไม่เลือก" ที่ช่อง Place code in seperate file ท่านะแยกหรือไม่แยก source code ก็ได้
แต่ในตัวอย่างที่เห็นนี้ผมต้องการแสดง code ใน file aspx ไปเลยครับ จากนั้นคลิกปุ่ม OK

4. VS จะสร้าง file ขึ้นมาดังตัวอย่างให้คลิกที่ปุ่ม Design

5.จะปรากฏหน้าการแสดงผลว่างๆ ให้ลาก Label 1 ชิ้น , Textbox 1 ชิ้น และ Button 1 ชิ้น
ลงมาจาก Toolbox มาวางลงบนเพจที่ว่าง ลากมาทีละอันนะครับ

จากนั้นคลิก 2 ครั้งที่ปุ่ม Button1

6.จะปรากฏหน้าต่าง source code ให้พิมพ์ code ลงในระหว่างบรรทัด 7 - 9 ลงไปดังตัวอย่าง

7.จากนั้นกดปุ่ม F5 บน Keyboard ครับ VS จะทำการ compile aspx แล้วเรียกโปรแรกม Internet Explorer

เพื่อแสดงผลตามที่ระบุไว้

8.ผมจะทดลองพิมพ์ข้อมูลลงไปใน Textbox ดังนี้ "Hello มหาวิทยาลัยนเรศวร" แล้วคลิกปุ่ม Button

9.จะแสดงข้อความแทนที่ Label1 ที่ปรากฏไว้ ดังตัวอย่าง

10.หากเป็นการพิมพ์ข้อความธรรมดา ย่อมไม่มีความผิดพลาดใดๆ แต่หากเรากรอกแท็กลงไปย่อมมีผล

กระทบต่อการแสดงผลเช่น ทดลองกรอกข้อมูลลงใน Textbox ดังนี้ "<h1>Hello มหาวิทยาลัย

นเรศวร</h1>" เมื่อคลิกปุ่ม Button จะปรากฏผลดังนี้

11.จากภาพที่ผ่านมาท่านจะพบ Error message ที่ web server ได้ทำการป้องกันการทำงานของแท็ก html

ที่แฝงมาด้วย ซึ่ง..เป็นประโยชน์นะครับหากมีการป้องกันดังกล่าวไว้

.....แต่นั่นหมายความว่า ท่านจะสร้าง web application แบบ editor ไม่ได้
เพราะท่านพิมพ์ได้เพียงข้อมูลที่เป็นตัวอักษรเท่านั้น
แต่...ไม่สามารถพิมพ์แท็กใดๆลงไปได้
จะเกิดอะไรขึ้นหาก web server ที่ท่านใช้บริการไม่กำหนดการป้องกันนี้ไว้
และแน่นอนว่าหากนั้นไม่ใช่ Web server ของท่านเอง ท่านจะทำอย่างไร....????

ผมพอมีหนทางครับ โดยการสั่งให้เข้ารหัส html ที่กรอกลงไปใน Textbox
แต่ผมจะขอสาธิตการแสดงผลที่ผิดพลาดอันเกิดจากการใส่แท็กลงไปใน textbox

12.ที่ บรรทัดแรก ให้พิมพ์ ValidateRequest="false" ต่อท้ายลงไป

13.จากนั้นกด F5 บน keyboard เพื่อทดลอง เมื่อ ie เรียกหน้าเพจขึ้นมาให้พิมพ์ "<h1>Hello มหาวิทยาลัย

นเรศวร</h1>" เมื่อคลิกปุ่ม Button จะปรากฏผลดังนี้

จะเห็นว่ามีขนาดใหญ่ หากเป็นการแสดงผลธรรมดาย่อมไม่สร้างปัญหาใดๆ

14.ทดลองพิมพ์ลงไปในช่อง Textbox ดังนี้ "<script>alert("Hello มหาวิทยาลัยนเรศวร ");</script>"

แล้วคลิกปุ่มจะปรากฏผลดังนี้

จะปรากฏกล่องข้อความดังตัวอย่าง....หากเป็น code ที่มีจุดประสงค์ร้ายคงดูไม่จืดเลยนะครับ :>

15.จากที่ได้โม้ไว้ให้ฟังแล้วว่าพอมีทางออกคือสั่งเข้ารหัส HTML ขอให้ปิดหน้าต่าง ie ที่กำลังทดสอบอยู่นี้ก่อน
แล้วกลับไปที่หน้า source code แก้ไข บรรทัดที่ 8 ดังตัวอย่าง

16.กด F5 บน keyboard ปรากฏ ie ขึ้นมาแล้วลองใส่แท็กลงไปช่อง Textbox ดังนี้ "<script>alert("Hello

มหาวิทยาลัยนเรศวร ");</script>"

แล้วคลิกปุ่มจะปรากฏผลดังนี้

ท่านจะเห็นแท็ก HTML ปรากฏออกมาดังตัวอย่าง

ขออภัยมา ณ โอกาสนี้นะครับที่ผมไม่ได้ให้รายละเอียดของ Script Attack มากนัก
หากท่านต้องการทราบมากกว่านี้โปรดค้นหาศึกษาได้จาก search engine

จบแล้วครับ ไม่ยากมากนะครับ


ขอให้สนุกกับการ Coding ครับ