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สดๆ ตัวเช็ค login โดนแฮกบ่อยมากครับ ทำให้ไปลบตารางผู้ใช้ แนะนำหน่อยครับ



 

งานที่เขียนด้วยphpสดๆ ตัวเช็ค login โดนแฮกบ่อยมากครับ ทำให้ไปลบตารางผู้ใช้ แนะนำหน่อยครับ

 



Topic : 130161



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



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



งานที่เขียน เป็นระบบภายในแต่ขึ้นเซิฟเวอร์ หน้าจอที่ผู้ใช้งานกรอกมีแค่ login username-pass และมี google recaptcha ซึ่งในหน้าlogin ก็จำกัดจำนวนtextแล้ว และ check_login ก็เข้ารหัสแล้ว passwordในฐานข้อมูลก็เข้ารหัสแล้ว

ปัญหาคือ ตารางข้อมูลของครูชอบหาย และรูปภาพครูก็หาย(คนละโฟเดอร์กับนศ.)
แต่ข้อสังเกตคือ หายแต่ขอครู ของนศ.ไม่หาย (loginมีให้ติ้กเลือกloginระหว่างนศ-ครู)

ไม่มีผู้ใช้อื่นเข้าระบบแน่นอนครับ เพราะมี line noti แจ้งเตือน
และFTPก็จะเข้าได้เฉพาะต้อง vpn เท่านั้น

โค้ดเช็คloginมีดังนี้ครับ

Code (PHP)
<?php session_start();
if (!isset($_POST['txt_user'], $_POST['txt_pass'])) {
    header('Location: ../kick.php?error=1'); // ไม่มีpost
    exit;
} 


// Recap
$Code = 0 ;
$Code=strlen($_POST["txt_user"]); // ฟังก์ชันในการนับจำนวนตัวอักษร 
if($Code=="" or strlen($Code != 13))
{   	
    header('Location: ../kick.php?error=13'); //อักษรไม่ครบ
    exit;

}
Else 
{       }

//End Recap



// recap

$response = $_POST["g-recaptcha-response"];

  $privatekey = "6LfiJDUUAAAAABa3DgXjv74LdtiMhsS7oIRp4W-F"; // Private Key


$url = 'https://www.google.com/recaptcha/api/siteverify';
	$data = array(
		'secret' => '6LfiJDUUAAAAABa3DgXjv74LdtiMhsS7oIRp4W-F',
		'response' => $_POST["g-recaptcha-response"]
	);
	$options = array(
		'http' => array (
			'method' => 'POST',
			'content' => http_build_query($data)
		)
	);
	$context  = stream_context_create($options);
	@$verify = file_get_contents($url, false, $context);
	$captcha_success=json_decode($verify);
	if ($captcha_success->success==false) {
		
		//echo "<p>You are a bot! Go away!</p>";

	  echo "<script type='text/javascript'>alert('รหัสลับไม่ถูกต้องกรุณากรอกใหม่')</script>";
echo '<script language=Javascript>top.location.href="../login.php";</script>';
	  
	echo "<font color='red'>Captcha Invalid code</font>";
  }

 else if ($captcha_success->success==true) 

{ 
 // end recap		
	




// login
//include 'conn.php';

include'../conn.php';  
include'../config.php';

$user = stripslashes($_POST["txt_user"]);
	$pass = stripslashes($_POST["txt_pass"]);
	
	
	  
	$user2 = htmlentities($user, ENT_QUOTES, 'UTF-8');
	$pass2 = htmlentities($pass, ENT_QUOTES, 'UTF-8');
      
    
    // แปลง Pass เป็น fomatในฐานข้อมูล
			
	$datetoday = $pass2; //060435
	$y = substr( $datetoday, 4, 2 ); //2016
	$m = substr( $datetoday, 2, 2 ); //09
	$d = substr( $datetoday, 0, 2 ); //28
	$pass2 = (($y+2500)-543).'-'.$m.'-'.$d ;
	 // echo $pass2;
	  
    // นศ หรือ บุคคลากร
    




/// TEACHER
if($_POST['type']=='TECH') //เป็นครู
	  {   
		  

// เริ่มครู

$stmt = mysqli_prepare($mysqli, 'SELECT * FROM `teacher` WHERE `teach_id` = ?');
mysqli_stmt_bind_param($stmt, 's', $_POST['txt_user']);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$user = mysqli_fetch_assoc($result);

if (!$user) {
    header('Location: ../login.php?error=4'); //User ผิด
    exit;
}

/// แปลง pass
$datetoday = $_POST['txt_pass']; //060435
$y = substr( $datetoday, 4, 2 ); //2016
$m = substr( $datetoday, 2, 2 ); //09
$d = substr( $datetoday, 0, 2 ); //28
$_POST['txt_pass'] = (($y+2500)-543).'-'.$m.'-'.$d ;

if (!password_verify($_POST['txt_pass'], $user['bd_verify'])) {

    header('Location: ../kick.php?error=5'); //pass ผิด
    exit;
}
	 // SESSION อาจารย์
		
     $_SESSION["user_id"] = $user["teach_id"];
     $_SESSION["user_name"] = $user["teach_name"];
     $_SESSION["user_status"] = $user["teach_status"];
     $_SESSION["user_level"] = $user["teach_level"];
     $_SESSION["area_id"] = $user["area_id"];
     $_SESSION["fac_id"] = $user["teach_depart"];
     $_SESSION["user_img"] = 'teacher/'.$user["teach_img"];
     

         session_write_close(); //ปิดการเขียนเซสชั่น
     

         
switch ($user['teach_status']) {
    case '1':

//save Log type2
$sql_log = "INSERT INTO log (type,user) 
VALUES ('2','".$_SESSION["user_id"]."')";

$query_log  = mysqli_query($conn,$sql_log );

if($query_log ) {


		/// Line Noti
        function send_line_notify($message, $token)
        { $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, "https://notify-api.line.me/api/notify"); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt( $ch, CURLOPT_POST, 1); curl_setopt( $ch, CURLOPT_POSTFIELDS, "message=$message"); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); $headers = array( "Content-type: application/x-www-form-urlencoded", "Authorization: Bearer $token", ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec( $ch ); curl_close( $ch ); return $result;
        }
        $message = $_SESSION["user_name"].' (TECH) เข้าสู่ระบบ';
        $token = '4QPWXGg4VsCCZQJhkkMiFCXEQV4LTHsUfx23cln2g6v';
        //echo '<div  style="color: white;">';
         send_line_notify($message, $token);
       // echo '</div>';
        /// cloes Line Noti	

    }     

        header('Location: ../index.php');
        exit;
    case '0':
        header('Location: ../kick.php?error=0');
        exit;
    case '3': 
        header('Location: ../kick.php?error=4');
        exit;
    default:
        header('Location: ../kick.php?error=6');
        exit;
}


} /// จบครู  ไปต่อ elseif นศ


รบกวนแนะนำหน่อยครับ ขอบคุณครับ



Tag : PHP, HTML









ประวัติการแก้ไข
2018-02-03 17:59:15
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-02-02 09:06:40 By : benzsara View : 2049 Reply : 14
 

 

No. 1



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

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


ต้องขอบคุณสำหรับ Jackpot ครับที่ทำให้คุณ Up-skill ต่อ
เบื้อต้นถ้าเป็น website ซึ่งจำเป็นต้องมีความปลอดภัยในระดับนึง คุณต้องศึกษาเรื่อง Injection และ OOP ควบคู่กันไปครับ
ศึกษาได้จาก
https://www.thaicreate.com/php/forum/117422.html
Credit : Chaidhanan

หรือแนะนำคุณใช้ Framework ตัวไหนก็ได้ครับ ซึ่งมีความปลอดภัยในระดับนึงเลยทีเดียว
ขอยกตัวอย่าง Laravel ::: Framework ตัวนี้มีระบบความปลอดภัยในระดับนึง ที่เรียกว่า Middleware ทำให้สามารถเข้าถึงข้อมูลได้อย่างปลอดภัยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 09:19:36 By : dudesaranyu
 


 

No. 2

Guest


PHP+MySQL บอกไว้เลยครับ ไม่เหมาะสำหรับเรื่องความปลอดภัย เพราะผมเคยแฮ็คมากับตัวผมเอง เพียงแค่รู็ USerName และ Pasword ของ DB ทุกอย่างจบครับ ถ้าจะให้ปลอดภัยขึ้น ทำเป็น Framwork ตาม คห.บน หรือเปลี่ยน DB ที่ปลอดภัยกว่านี้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 09:24:37 By : OOP
 

 

No. 3



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



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

ขอบคุณครับคุณ DÜd€ :3

ขอบคุณสำหรับตัวอย่างครับ ใคระพอมีเพิ่มเติมบอกได้เลยนะครับ


ประวัติการแก้ไข
2018-02-02 09:48:51
2018-02-03 18:01:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 09:46:49 By : benzsara
 


 

No. 4



โพสกระทู้ ( 4,716 )
บทความ ( 8 )



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


ที่ว่าตารางหาย หลัง login แล้วสามารถเข้าไปลบตารางได้ทางหน้า admin เหรอครับ?
ถ้าหน้า admin ไม่มีทางลบตารางได้ แสดงว่ามีการ login เข้า db โดยตรงเลยครับ หรือเข้าทาง control panel ของโฮสท์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 09:49:01 By : mr.v
 


 

No. 5



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



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

phpmyadmin เป็น V.ล่าสุดครับ

มีอยู่ทางเดียวที่สามารถเข้า DB ได้คือphpmyadmin ครับ โดยพิมพ์ชื่อโฮต/phpmyadmin ผมว่ามันน่าจะหลวมไป

ใครพอมีทางแนะนำมั้ยครับ server สามารถตั้งค่าเองได้หมด เพราะเป็น server ของผมเอง ใช้ centos ทำ

ในใจอยากให้ต้อง vpn เท่านั้นถึงเข้า phpmyadmin ได้ แต่ไม่รู้จะ Config ยังไง

ใครมีอะไรเสริมแนะนำได้นะครับ

--

ใช้มาหลายปีไม่มีโดน จนกระทั่ง google ส่งบอทมาเก็บข้อมูลครับ (ของเดิมเป็นภายในจริงๆ ใช้อยู่ 2 3 คน เพื่อบันทึกข้อมูล แต่หลังๆเปิดฟังชั่นให้นศ loginมาดูได้ จึงมีการส่งurlของระบบผ่านช่องทางต่างๆ จึงทำให้บอทgoogleรู้ )


ประวัติการแก้ไข
2018-02-02 09:59:34
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 09:57:22 By : benzsara
 


 

No. 6



โพสกระทู้ ( 4,716 )
บทความ ( 8 )



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


update phpmyadmin เพราะจำได้ว่ามีข่าวเจอรูรั่ว
เปลี่ยนรหัสผ่านเข้าหน้า phpmyadmin ลองหาดูว่ามันมีพวก plugin เสริมให้ใช้ 2 step authentication มั้ย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 10:04:13 By : mr.v
 


 

No. 7



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



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

พอมีข่่าวก็อัพเลยครับ เป็นล่าสุดจากทางเว็บเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 11:18:19 By : benzsara
 


 

No. 8



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

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


ตอบความคิดเห็นที่ : 7 เขียนโดย : benzsara เมื่อวันที่ 2018-02-02 11:18:19
รายละเอียดของการตอบ ::
มี 2 คำถามในหัวครับตอนนี้
ปัญหาคือ ตารางข้อมูลของครูชอบหาย และรูปภาพครูก็หาย(คนละโฟเดอร์กับนศ.)
- ตารางครูหายไปเลยหรอครับ หรือแค่ข้อมูลหาย
- path image นี่ได้ทำ Permission ไว้รึเปล่าครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 12:34:23 By : dudesaranyu
 


 

No. 9



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



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

1 ข้อมูลครูครับที่หาย
2. ทำ 777 ไว้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 13:24:59 By : benzsara
 


 

No. 10



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

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


ตอบความคิดเห็นที่ : 9 เขียนโดย : benzsara เมื่อวันที่ 2018-02-02 13:24:59
รายละเอียดของการตอบ ::
งั้นลองทำทีละ step ครับ
Step 1 : Control (CRUD) รวมถึง Connect SQLI ในรูปแบบ OOP ครับ
Step 2 : จาก FTP ตั้งค่า Folder path image ให้อ่านได้อย่างเดียว และ เขียน PHP : chmod เพิ่มเติม เมื่อมีการ upload image ทำการเปิด permission ที่ต้องการเพื่อ upload เมื่อเสร็จจากการ upload chmod ให้อ่านได้อย่างเดี่ยวครับส่วนเรื่อง update และ delete ใช้หลักการเดียวกันครับ



ประวัติการแก้ไข
2018-02-02 14:10:52
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 14:07:58 By : dudesaranyu
 


 

No. 11



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

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

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


เป็นไปได้ไหม ครูผู้ใช้งานลบข้อมูลกันเอง ??
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-02 16:06:31 By : apisitp
 


 

No. 12



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



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

ไม่น่าได้ครับ เพราะไม่มีใครloginเลย ผมมีlog และ lineแจ้งเวลามีคนเข้าระบบ ที่สำคัญคือ ไม่สามารถลบ aadmin ในระบบได้เพราะผม hide ไว้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-03 18:00:43 By : benzsara
 


 

No. 13



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



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


ผมเดาว่าน่าจะมาจาก ftp มากกว่า user password อาจมีคนรู้

เก็บ user pasword ไว้ใน database หรือเปล่า เห็นบอกว่าใช้ vpn
และ web ใช้งาน user ใช้ permission root หรือเปล่า ถ้าใช่่ก็ให้เปลี่ยนซะ

และการลบ file ไม่น่ามาจาก การสั่งงาน ผ่าน sql injection
sql injection ลบได้ ขโมยได้ เฉพาะ ข้อมูลที่อยู่ใน database

และการทำ sql injection ไม่ได้ทำแค่ ช่วงการ login
แต่สามารถ ใช้งานจากคำสั่ง view หรือ report ต่างๆ ได้ด้วย

จำได้ว่ามี web หนึ่ง เขา จะช่วยเราตรวจเช็คความปลอดภัย ช่วยให้เราปิดกันช่องโหว่ได้ ลองค้นหาจาก google ดูนะครับ

การป้องกัน หน้าบ้าน กับหลังบ้าน ควรใช้ sub domain มาช่วยแยกการทำงาน
จะช่วยป้องกันได้อีก ระดับหนึ่ง

web ไหนไม่ต้องการให้ robot เข้ามายุ่งเกี่ยว ก็เซท robot.txt เอาไว้ ก็จะไม่มี search engine เข้ามาเก็บ stat
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-03 18:26:56 By : Chaidhanan
 


 

No. 14



โพสกระทู้ ( 4,716 )
บทความ ( 8 )



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


งานนี้อาจต้องจ้าง hacker หาช่องโหว่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-02-03 22:31:50 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : งานที่เขียนด้วยphpสดๆ ตัวเช็ค login โดนแฮกบ่อยมากครับ ทำให้ไปลบตารางผู้ใช้ แนะนำหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 04
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 อัตราราคา คลิกที่นี่