Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > PHP MySQL การดักจับข้อมูลที่ผิดปกติจากภายนอกเว็บไซด์ (SQLInjection, form data, get, post)



 

PHP MySQL การดักจับข้อมูลที่ผิดปกติจากภายนอกเว็บไซด์ (SQLInjection, form data, get, post)

 



Topic : 081639

Guest




ก็สวัดดีเพื่อนๆนัก Develop ทุกท่านและน้องๆใหม่ที่กำลังหัดเขียน PHP กันนะครับ
สำหรับผมในวันนี้ผมจะมานำเสนอเกียวกับการดักจับข้อมูล ที่ผิดปกติที่เราจะนำเข้ามาทำงานในไฟล์ PHP ของเรา ไม่ว่าจะนำมา คำนวณ นำมาบันทึกลงฐานข้อมูลกัน หลายๆคนคงอาจจะได้ยินคำว่า [font=Verdana]SQLInjection [/font] นะครับ คือเป็นการ Hack เข้าเว็บไซด์ของเราโดยการ ทำให้คำสั่ง SQL ที่เราเขียนเป็นเงื่อนไขเอาไว้ให้เป็นจริง อืม.. ส่วนเนื้อหาเพิ่มเติมที่ต้องการศึกษาให้เข้าไปตามเว็บ

http://www.unixwiz.net/techtips/sql-injection.htmlนี้กันเลยครับ

เกริ่นมานาน คือจากปัญหานี้ ผมเองได้เขียน Class เอาไว้เพื่อดักจับข้อมูลที่ส่งมาจากภายนอก เช่น Form, Get parameter และอื่นๆ
เพื่อกรองข้อมูลที่ได้มาก่อน

ซึ่ง ผมจะใช้ Regular Expression ในการตรวจสอบข้อมูลนะครับ
[color=orange]ส่วนน้องๆ เพื่อนๆคนไหนยังไม่ค่อยชินกัน Regular expression ก็ให้เข้าไปที่ link นี้นะครับ
http://en.wikipedia.org/wiki/Regular_expression ไปศึกษาเพิ่มเติมกันเอง คริๆๆๆ


ที่ผมทำเอาไว้จะมีอยู่ 3 ส่วนนะครับ
#1 ดักจับข้อมูลที่ส่งมาแบบ GET [วิธีการเรียกใช้งาน filltering::filterGet()]
#2 ดักจับข้อมูลที่ส่งมาแบบ POST [วิธีการเรียกใช้งาน filtering::filterPost()]
#3 ดักจับข้อมูลที่เป็น Session [วิธีการเรียกใช้งาน filltering::filterSession()]
** Class นี้จะเรียกใช้งานแบบ Static function นะครับ (ไม่ต้อง Instance class ก็เรียกใช้งาน function ใน Class ได้)



Code (PHP)
/********************************************************
* validate data from user submit request
* when user summit request from form on the page
* and data is risk to SQLInject input on the form data
* so this class is trap the data is risk or about the
* SQLInjection or contain sql command etc..
*********************************************************/
final class filtering{
	private static $_pattern = '/((select|insert|update|delete|alter|create|grant|drop)+|([a-z0-9\'\._]+[ \t]*(=|like)[ \t]*([a-z0-9\'%\)\(\*]+[ \t]*)+)+|([a-z0-9\'\._]+[ \t]+(is null|is not null))+)+/i';
	public static function filterGet(){
		if( !is_array($_GET) && count($_GET) === 0 ) return 0;
		foreach( $_GET as $v ){
			if( preg_match(filtering::$_pattern, $v) > 0 ){
				return 1;
				break;
			}
		}
		return 0;
	}


	public static function filterPost(){
		if( !is_array($_POST) && count($_POST) === 0 ) return -1;
		foreach( $_POST as $k=>$v ){
			if( preg_match(filtering::$_pattern, $v) > 0 ){
				return 1;
				break;
				//$_POST[$k] = preg_replace(filtering::$_pattern, '', $v);
			}
		}
		return 0;
	}


	public static function filterSession(){
		if( !is_array($_SESSION) && count($_SESSION) === 0 ) return 0;
		foreach( $_SESSION as $v ){
			if( preg_match(filtering::$_pattern, $v) > 0 ){
				return 1;
				break;
			}
		}
		return 0;
	}
}


$_POST = array('cust_name'=>'chairod phapa', 'cust_mobile'=>'0848399882', 'cust_addr'=>"69\\2 soi jariensak");
if( filtering::filterPost() === 1 ) print "<h1>Your data input into form data is risk and it scope in risk data please enter again</h1>";
else print "<h1>form data is usage !!!</h1>";




เดียววันหลังผมจะเขียนอะไรดีๆๆ เข้ามาให้เพื่อนๆ พี่ๆ น้องๆ นัก Developer ทุกคนได้ใช้งานกันนะครับ
ก็ยังไงมีอะไรก็ติดต่อผมได้ที่ Email : [email protected] นะครับยินดีให้คำปรึกษาและข้อเสนอแนะในด้าน Programming คับ
ส่วนตัวผมชอบเป็นชีวิตจิตใจกันเลยทีเดี่ยว



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-07-27 16:53:20 By : ชัยโรจน์ View : 1732 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

แจ่มครับ ปกติผมใช้ mysql_real_escape_string() อันเดียวครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-27 21:02:47 By : mr.win
 


 

No. 2



โพสกระทู้ ( 616 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

เยี่ยมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-27 21:43:04 By : slurpee55555
 

 

No. 3

Guest


งั้่นผมแนะนำเพิ่มแล้วกันครับ

ผมไม่ต้องใช้ฟังชั่นก์ mysql_real_escape_string ก็ได้นะครับ
ง่ายๆ เลยใช้ Concept PHP ที่ให้มาคือการใช้เครื่องหมาย {} ปีกกาเปิดปิด

ตัวอย่าง
$sqlCommand = "SELECT * FROM customer WHERE custno = '{$_POST['cust_no']}'";

อันนี้ผมรับรองครับ ถึงแม้จะใส่เครื่องหมาย ' (Single quote) มาก็ไม่ Error ครับ

แต่เน้นว่าให้ใช้เครื่องหมายครอบข้อความเป็น Double quote นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-30 10:23:03 By : ชัยโรจน์
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHP MySQL การดักจับข้อมูลที่ผิดปกติจากภายนอกเว็บไซด์ (SQLInjection, form data, get, post)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่