2561
รับทำเว็บไซต์อสังหาริมทรัพย์  รับทำเว็บฟุตบอล  รับทำเว็บพระเครื่อง รับทำเว็บขายรถมือสอง
หมวดสินค้า
สคริปเว็บประมูล+ลงประกาศฟรี
สคริปเว็บเต็นท์รถมือสอง
สคริปเว็บหางาน
สคริปเว็บบอร์ด
สคริปเว็บขายบ้าน ที่ดิน อสังหาริมทรัพย์
สคริปเว็บฟุตบอล
สคริปเว็บวาไรตี้
สคริปเว็บไซต์วัด
สคริปเว็บไซต์รีสอร์ท ห้องพัก ที่พัก ร้านอาหาร
สคริปเว็บ ขยายสายงาน MLM
สคริปร้านค้าออนไลน์
สคริปเว็บพระเครื่อง
สคริปเว็บหาเพื่อน Social Network
สคริปเว็บ ขายสินค้า+โปรเจ๊ค
สคริปเว็บลงประกาศฟรี
สคริป Hosting
สคริปเว็บ เว็บไซต์โรงเรียน
สคริปเว็บ อบต. เทศบาล โรงพยาบาล
รับทำระบบวิทยุออนไลน์
รับทำเว็บไซต์ ด้วยระบบ JOOMLA
ขายสคริปทำจาก SMF
สคริป เว็บดูหนังออนไลน์
สคริป เกมส์ออนไลน์
สคริปเว็บ จองห้องพัก จองโรงแรม
ขายสคริปทำจาก Discuz!
สคริปเว็บ ติวเตอร์
สคริปเว็บเพื่อการศึกษา
สคริปห้างสรรพสินค้า
สคริปเว็บเครื่องเสียง
สคิปเว็บ อัพวีดีโอ
ขายสคริปเว็บสำเร็จรูป
สคริปเว็บหน่วยงาน เว็บบริษัท
สคริปเว็บ 25satang
สคริปเว็บท่องเที่ยว เว็บทัวร์
สคริปเว็บไซต์ หน่วยงานอื่นๆ
สคริปเว็บร้านเสริมสวย
สคริปเว็บดูดวง
รับทำเว็บไซต์สปา
รับทำเว็บไซต์บริษัท ราคาถูก
ตะกร้าสินค้า
จำนวนสินค้า ชิ้น
รวมเงิน บาท
ดูสินค้าในตะกร้า
ค้นหาสินค้า
ชื่อสินค้า
 
ตรวจสอบสินค้า
เลขที่ใบสั่งซื้อ
 
เว็บบอร์ด รับทำเว็บไซต์อสังหาริมทรัพย์ รับทำเว็บฟุตบอล รับทำเว็บพระเครื่อง รับทำเว็บขายรถมือสอง ตอบกระทู้

วิธีป้องกัน SQL Injection

  « เมื่อ 21-05-2015 เวลา 09:19:01 โดย เจ้าของร้าน อ่าน 1178 »
วิธีป้องกัน SQL Injection
มีอยู่วันหนึ่ง เว็บลูกค้าที่ผมดูแลอยู่เกิดผิดปรกติ เมื่อเข้าไปดูปรากฏว่าไฟล์บนเว็บถูกลบ แล้วเปลี่ยนเป็นข้อความว่าเว็บนี้โดนแฮ็คแล้ว

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

หลังจากอ่านข้อมูลในอินเตอร์เน็ต จึงพบว่า การถูกแฮ็คครั้งนี้เกิดจาก SQL Injection

แล้วอะไรคือ SQL Injection ?

สมมุติหน้าเว็บใช้ชื่อไฟล์ว่า articles_view.php?id=1
และในไฟล์ articles_view.php มี code เขียนว่า
1.$sql = "select * from articles where id = '$id' ";
ผู้ไม่หวังดีแอบส่งค่าเป็น articles_view.php?id=1'or'1=1
ก็จะสามารถเรียกดูข้อมูลใน database ของเราได้ทั้งหมด
(รายละเอียดวิธีทำ ไปหาอ่านใน google เองนะครับ)

วิธีป้องกัน ผมใช้ code นี้ แปะไว้ส่วนบนของไฟล์ php ทุกไฟล์
1.# ป้องกัน sql injection จาก $_GET
2.foreach ($_GET as $key => $value) {
3.$_GET[$key]=addslashes(strip_tags(trim($value)));
4.}
5.if ($_GET['id'] !='') { $_GET['id']=(int) $_GET['id']; }
6. 
7.extract($_GET);
บรรทัดที่ 2 หมายความว่า ทุกๆค่าที่ถูกส่งมาด้วยการ GET ให้ตัดช่องว่างด้านหน้าและด้านหลัง
แล้วตัดเครื่องหมาย html ออก
คำสั่ง strip_tags นี้ช่วยให้ การแทรก code javascipt ทำงานผิดพลาด
เช่นมีคนแทรก javascript มาว่า <script>alert('555');</script>
คำสั่ง strip_tags จะทำเหลือแต่ข้อความ alert('555') ซึ่งทำงานไม่ได้ เพราะไม่ได้ระบุว่าเป็น javascript
หลังจากนั้นก็ addslashes เข้าไปอีกชั้นนึง ถ้ามีคนส่งค่า 1'or'1=1 เข้ามา จะถูกแปลงเป็น 1\'or\'1=1
ทำให้คำสั่ง SQL ล้มเหลว ประมวลผลผิด

และตบท้ายด้วยการเช็คค่า id ถ้าไม่ใช่ช่องว่าง ให้แปลง id เป็น integer เท่านั้น
และปิดด้วยคำสั่ง extract($_GET) เพื่อรับค่าจากการ GET ทั้งหมด
ต่อด้านล่าง....
RE : วิธีป้องกัน SQL Injection ตอบกระทู้
  « ตอบ # 1 เมื่อ 21-05-2015 เวลา 09:19:17 โดย เจ้าของร้าน »  
วิธีนี้ป้องกัน SQL Injection จากทุกหน้าที่รับค่าด้วยการ GET
ส่วนหน้าไหนที่มี form submit รับค่าจากการ POST ก็ใช้หลักการเดียวกัน

ยังมีอีกส่วนที่เราต้องป้องกัน คือ การกรอก user, password
ตัวแปรที่รับค่าจะต้อง addslashes เข้าไปด้วย เช่น
1.$username addslashes(trim($_POST['user']));
2.$passwordaddslashes(trim($_POST['pwd']));
ถึงตรงนี้ เราคิดว่าเราป้องกันดีแล้วทั้งจาก GET และ POST
แต่ยังมีอีกส่วนหนึ่ง สมมติเรามี webboard ที่อนุญาติให้คนทั่วไปอัพรูปเข้ามาได้
แล้วเรามีหน้า admin ซึ่งตั้งค่าได้ว่า จะอนุญาติให้อัพไฟล์ชนิดใดได้บ้าง
แล้วแฮ็กเกอร์เก่งมาก เดา user, password ถูก เข้าสู่หน้า admin ของเราได้
แล้วไปแก้การอนุญาติอัพโหลดไฟล์ ให้อนุญาติไฟล์ .php ด้วย
จากนั้นก็อัพไฟล์ .php ของแฮ็คเกอร์ขึ้นเว็บเรา
หลังจากนั้น แฮ็กเกอร์ก็จะสามารถจัดการ อัพโหลด ดาวโหลด สั่งลบ ทุกไฟล์ในเว็บเราได้

การป้องกันอีกชั้นนึง คือ ต้องไม่อนุญาติให้อัพโหลดไฟล์ .php อย่างเด็ดขาด
ผมใช้ code นี้ในการตรวจสอบการอัพโหลดไฟล์ผ่าน webboard
01.$filename=$_FILES[$namefile]['name'];
02.$u1=substr($filename, -3); $u1=strtolower($u1);
03. 
04.// รายชื่อชนิดไฟล์ที่อนุญาติ ที่บันทึกไว้ในฐานข้อมูล
05.$allowfile=' '.$setting["allow_file"];
06. 
07.// แม้ว่าในฐานข้อมูลจะอนุญาติไฟล์ .php แต่ในขั้นตอนอัพโหลด เราจะยกเลิกไฟล์ php
08.$u3='php,htm,.pl,cgi,js,asp,swf,com,bat,cmd';
09.$t1=explode(
1
รับทำเว็บไซต์อสังหาริมทรัพย์ รับทำเว็บฟุตบอล รับทำเว็บพระเครื่อง รับทำเว็บขายรถมือสอง
หน้าแรก รายการสคริปต์ สินค้าในตะกร้า การสั่งซื้อและขนส่ง แจ้งการชำระเงิน เว็บบอร์ด ติดต่อเรา เว็บเพื่อนบ้าน
Copy Right © รับทำเว็บไซต์อสังหาริมทรัพย์ รับทำเว็บฟุตบอล รับทำเว็บพระเครื่อง รับทำเว็บขายรถมือสอง
Design By WebKrooX.com webkroox.com เว็บครูเอ็กซ์ ดอตคอม
ที่อยู่ 209/348 อำเภอเมือง จังหวัดขอนแก่น รหัสไปรษณีย์ 40000 เบอร์โทรศัพท์ 097-3049990(เบอร์ line) และ 080-7567590 Fax meewebsite
Email : webkroox@gmail.com