[php] งานเข้าแล้วครับ ใครเก่งเรื่อง security ช่วยแนะนำหน่อยครับ

เริ่มโดย GillBate, 01 พฤษภาคม 2010, 18:02:18

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

GillBate

 :wanwan009: กำของเวรจริงๆ มันมีคนๆนึงเบื่อเกม Epic Duel ที่เขาเล่นอยู่แล้วไปโพสใน forum เพื่อโฆษณามาเกมผม แล้วเจ้าของเกมนั้นมันมี comunity ที่เป็น hacker เกมผมเลยตกเป็นเป้าการโจมตีตั้งแต่ังไม่เปิดเลยล่ะครับ
นี่ครับ staff ผมรายงานมา http://www.legendora.net/forum/index.php?topic=141.0

ถามว่าการแฮกมันทำอย่างไรครับ มีอะไรที่เป็นจุดอ่อนที่ควรระวังบ้างช่วยบอกหน่อยครับ

icez

ทุกจุดที่มีการรับค่าจาก client ครับ (ไม่ว่าจะเป็น post / get / cookie)

ก่อนเอาเข้า mysql ต้องตรวจสอบค่าที่รับมาก่อนเสมอ ว่าอยู่ในรูปแบบที่ถูกต้องรึเปล่า
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ


สุ ด ห ล่ อ ™

mysql_escape ใช้ฟังก์ชั่นนี้ช่วยด้วยก็ดีนะครับ
แล้วก็ใช้พวกลบสัญลักษณ์พิเศษในบางฟิลด์

และตรวจสอบข้อมูลต่างๆ

GillBate

 :P ช่วยขยายความหน่อยได้มั้ยครับ ไม่รู้เรื่องเลยจริงๆ

woratana

ที่น่ากลัวสุดคือ SQL Injection

แล้วก็ตรวจสอบ Input ที่เข้ามาในระบบให้ดี ๆ อะไรควรเป็นเลขก็แปลงให้เป็นเลข ระบบก็จะปลอดภัยจากการโจมตีในระดับหนึ่งครับ  :-[
[direct=http://www.designil.com/contact-us]DesignIL เรียนเทคนิคเว็บดีไซน์ใหม่ ๆ ฟรี!! รับทำเว็บไซต์ เว็บดีไซน์ ธีม WordPress
[direct=http://www.designil.com/]DesigNIL: สอนออกแบบเว็บไซด์ Web Design HTML5 CSS3
[/direct]

Mayjung007

ลองเสิรฐในGoogleดูอ่าคับ วิธีป้องกันมันมีเยอะมาก สำหรับพวก ช่อง input ทั้งหลายนะครับ [ sql injection , javascript injection ]

*สำหรับลิ้งที่ท่านให้ผมเข้าไปนั้นเข้าไม่ได้ ต้องสมัครก่อน เลยไม่รุ้ว่าโดนเจาะทางไหน

อย่างเช่น ถ้าเอาตัวแปรไปลงฐานข้อมูลตรงๆ เช่น

select * from table where username= $POST['username'] and password = $POST['password'];

อย่างนี้คือ รับจากฟอร็มยังไงก็ ยังงั้นเลย วิธีโบราณ ถึกๆ เลยก็ คือ ใส่ ใส่ค่า username คือ ""or id='1' ประมาณนี้คับก้คือ
มันจะทำให้เงื่อนไขนั้นเป็นจริง ก็จะแสดงข้อมูลครับ ทางป้องกันคือ
ฟังชั่นที่
1.md5(POST['passsword']); เป็นการเข้ารหัสของ POST['password'] เป็น hashing แบบทางเดียว
2.mysql_escape_string  คือ กำจัด สตริงออก พวก ' ไม่ก็ ;
3.base64_encode และก้ base64_decode มั้ง ฟังชั่นแรกไว้แปรงค่าเปน รหัส / ฟังชั่น หลัง แปลง รหัส เป้น ค่ากลับ
4.addslashes และ stripslashes คือ เพิ่ม \ ไว้ หน้า " และ คำสั่งหลัง ไว้ ลบ \ ที่ add มา

ประมาณนี้คับผม

O.o!!

ครับ เรื่อง security ต้องระวัง sql injection นี่หล่ะครับ

ตามที่ mayjung ยกตัวอย่างให้อ่ะครับ ถ้าตรงที่เราใส่ password เพื่อ login แต่ถ้าพวก hacker ใส่ "or id=1" ค่าก็จะเป็นจริง

ลองหา google ดูน่ะครับ เช่น http://www.securiteam.com/securityreviews/5DP0N1P76E.html

GillBate

อ้างถึงจาก: Mayjung007 ใน 01 พฤษภาคม 2010, 22:04:02
ลองเสิรฐในGoogleดูอ่าคับ วิธีป้องกันมันมีเยอะมาก สำหรับพวก ช่อง input ทั้งหลายนะครับ [ sql injection , javascript injection ]

*สำหรับลิ้งที่ท่านให้ผมเข้าไปนั้นเข้าไม่ได้ ต้องสมัครก่อน เลยไม่รุ้ว่าโดนเจาะทางไหน

อย่างเช่น ถ้าเอาตัวแปรไปลงฐานข้อมูลตรงๆ เช่น

select * from table where username= $POST['username'] and password = $POST['password'];

อย่างนี้คือ รับจากฟอร็มยังไงก็ ยังงั้นเลย วิธีโบราณ ถึกๆ เลยก็ คือ ใส่ ใส่ค่า username คือ ""or id='1' ประมาณนี้คับก้คือ
มันจะทำให้เงื่อนไขนั้นเป็นจริง ก็จะแสดงข้อมูลครับ ทางป้องกันคือ
ฟังชั่นที่
1.md5(POST['passsword']); เป็นการเข้ารหัสของ POST['password'] เป็น hashing แบบทางเดียว
2.mysql_escape_string  คือ กำจัด สตริงออก พวก ' ไม่ก็ ;
3.base64_encode และก้ base64_decode มั้ง ฟังชั่นแรกไว้แปรงค่าเปน รหัส / ฟังชั่น หลัง แปลง รหัส เป้น ค่ากลับ
4.addslashes และ stripslashes คือ เพิ่ม \ ไว้ หน้า " และ คำสั่งหลัง ไว้ ลบ \ ที่ add มา

ประมาณนี้คับผม

อ่อ ครับลืมไปว่ากระทู้นั้นเป็นของโซน staff :P
ข้อแรกที่แนะนำมา ทำอยู่แล้วครับ
ว่าแต่ข้อที่เหลือนี่ใช้ตรงไหนครับ ตรง login เหรอครับ

ปล. ยังไม่โดนเจาะครับ แค่โดนหมายหัวไว้เฉยๆ เพราะผมยังไม่ได้อัพขึ้นไป :P

ball6847

ใช้ codeigniter จนแทบลืมวิธีป้องกัน SQLInjection กับ XSS ไปหมดแระ

เคยได้ยินฝรั่งมันสอนเอาไว้

"Never trust your user"

ทุกอย่างที่ได้รับจาก User ให้สันนิษฐานไว้ก่อนว่ามาจาก Hacker

อะไรบ้างที่มาจาก user - $_GET , $_POST , $_COOKIE แล้วก็ $_REQUEST , $_SERVER บางตัวที่ server อ่านค่าจากทางฝั่ง client อย่างเช่น $_SERVER['HTTP_USER_AGENT'] , $_SERVER['HTTP_REFERER'] เพราะสองอย่างนี้สามารถ make ได้อย่างอิสระเลย อ้อลืมอีกอย่างคือ $_FILES
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]