เข้าเว็บผ่าน link ใน code java script ได้โดยไม่ต้อง login ครับ
ทุกครั้งที่มีการ request ขอข้อมูล ที่ server ต้องตรวจสอบ trustee ทุกครั้ง
ไม่ใช่ขออะไรมาส่งให้หมด
Date :
2021-01-21 13:29:46
By :
Chaidhanan
ผมว่ามันไม่ใช่แล้วนะ การใช้ JS check login เนี่ย
มันรั่วบรมรั่วเลย JS check login ...หรือผมอาจจะเข้าใจผิดหรือจขกท.อธิบายไม่หมด
เอางี้ก่อนเลย ตอนเรียกหน้า URL เนี่ย เรียกไปทางหน้า admin สมมุติว่าเรียก http://localhost/myapp/admin/articles เพื่อจัดการบทความ
ในทุกๆหน้าที่จัดให้เป็นฝั่ง admin จะต้องมีการตรวจสอบการ login ทุกครั้งทุกหน้า
และการตรวจสอบนี้ โดยปกติแล้วจะทำกันที่ฝั่ง server (ส่วนใหญ่ถ้าใช้ PHP ก็คือ PHP หรือภาษาอื่นๆ) ไม่ใช่ JS นะครับ.
ยกตัวอย่างแบบง่ายๆง่อยๆนะ ในทุกๆหน้าควรมีการ include/require ไปยังหน้าที่มีฟังก์ชั่นตรวจการ login และเรียกใช้งานการตรวจ login เสมอ
ตัวอย่าง
Code (PHP)
<?php
function checkLogin()
{
// check login ที่คุณเขียน
}
if (checkLogin() === false) {
// ถ้าไม่ได้ login ก็ redirect ไปหน้า login ซะ
}
checkLogin.php
Code (PHP)
<?php
// ตรวจ login เสมอ
require 'checkLogin.php';
// หน้า admin ปกติ ทำงานต่อไป
แบบนี้ อันนี้เป็นตัวอย่างสั้นๆให้เข้าใจก่อน คือถ้าไม่มีกระบวนการตรวจในทุกหน้า มันรั่วแน่นอนครับ ทุกเบราเซอร์มี history ถ้านึกว่าเอาแค่ให้คลิกลิ้งค์ /admin แล้ว login แล้วนอกนั้นเขาคงเดา URL ไม่ได้ แบบนี้ความพังจะเกิดแน่ๆ.
บอกแบบย่อๆก็คือเหมือนคห. 1 คือมันต้องมีการตรวจเสมอ
Date :
2021-01-21 14:28:52
By :
mr.v
อาจจะเป็นเพราะ SESSION เป็น admin จริงๆ?
ลอง Logout แล้วไปหน้านั้นอีกทีครับ
Date :
2021-01-21 15:55:53
By :
{Cyberman}
ขอบคุณทุกท่านครับ
อธิบายเพิ่มเติมครับ มีการฟอร์ม และเช็ค สถานะการ login ที่ java script ครับ
แล้วส่งฟอร์มเข้าไปที่ php เพื่อเช็ค user password ครับ
ผมลอง logout แล้วเอา url ไปวาง ก็เข้าหน้า login ได้ครับ
Date :
2021-01-21 15:58:47
By :
umat
นำ action page (admin ajax server page) มาดูครับ
Date :
2021-01-21 21:14:30
By :
lakornworld
ไม่เห็น Code มองไม่ออกครับ เพราะ
ถ้าเป็น javascript จริง คุณต้องดูพวก localStorage เพราะมันเก็บค่าต่างๆไว้บน Client Browser
แต่ถ้าแค่ใช้ ajax หรือ ajax&jquery ทำแค่เช็ค state แต่ใช้ php ทำ Authentication มันจะเก็บไว้ฝั่ง Server ซึ่งมันคือ Session
ประวัติการแก้ไข 2021-01-22 15:09:56
Date :
2021-01-22 15:07:58
By :
Genesis™
ตรงนี้เป็นฟอร์มจาก script ที่จะส่ง ไป php นะครับ
$('.log_submit').click(function() {
if($("#tex_logName").val() == ''){
alert("กรุณากรอก Username");
$('#tex_logName').focus();
return false
}
if($("#tex_logPass").val() == ''){
alert("กรุณากรอก Password");
$('#tex_logPass').focus();
return false
}
$.post("check_login.php?"+$("#form_login").serialize(), {
}, function(response){
var stre=response.substring(0, 1);
var new_idUser=response.substring(1, 6);
var new_user=$("#tex_logName").val();
var new_pass=$("#tex_logPass").val();
if(stre==3)
{ alert("Username หรือ Password ไม่ถูกต้อง!.");}
else if(stre==1)
{
window.location.href="index.php?action_page=user_01&username="+new_user+"&idUser="+new_idUser+"&status_log=1";
}
else if(stre==2)
{ <!--alert("admin");-->
window.location.href="index.php?action_page=admin_01&username="+new_user+"&idUser="+new_idUser+"&status_log=2"; -- ผม cop ตรงนี้ไปวางต่อชื่อเว็บเข้าเป็นแอดมินได้เลยครับ ไม่รู้เขาเขียนไว้ยังไงนะครับ
}
});
});//$('.log_submit').click(function() {
});// $(document).ready( function(){
</script>
<div id="detail_rightlog">
<form name="form_login" id="form_login" method="post" action="check_login.php">
<table width="200">
<tr><td class="con_logName"><input type="text" name="tex_logName" id="tex_logName" value="" /></td></tr>
<tr><td class="con_logPass"><input type="password" name="tex_logPass" id="tex_logPass" value="" /></td></tr>
</table>
</form>
<p class="log_regis" style="width:80px;"><a href="index.php?action_page=rLog01">สมัครสมาชิก</a></p>
<p class="log_forget"><a href="index.php?action_page=rLog02">ลืมรหัสผ่าน</a></p>
<p class="log_submit"></p>
</div><!--//<div id="detail_rightlog">-->
---------------------------------------------------------------------------------------------------
ส่วนอันนี้เป็น check login.php ครับ
<?
require_once("include/dbfunction.php");
session_start();
foreach ($_GET as $key => $value) {
$_GET[$key]=addslashes(strip_tags(trim($value)));
}
if ($_GET['id'] !='') { $_GET['id']=(int) $_GET['id']; }
extract($_GET);
$txtUsername=addslashes(trim($_GET['tex_logName']));
$txtPassword=addslashes(trim($_GET['tex_logPass']));
$strSQL = "SELECT * FROM user_login WHERE username = '".$txtUsername."'
and password = '".$txtPassword."'";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
if(!$objResult)
{
echo "3";
}
else
{
$_SESSION["username"] = $objResult["username"];
$_SESSION["id_user"] = $objResult["id_user"];
$_SESSION["status_user"] = $objResult["status_user"];
session_write_close();
if($objResult["status_user"] == "0")
{
//header("location:admin_page.php");
echo "1$objResult[id_user]";
}
else
{
//header("location:user_page.php");
echo "2$objResult[id_user]";
}
}
mysql_close();
?>
Date :
2021-01-22 15:19:21
By :
umat
อือหือออออออออออออออออออออออออออออออออออออ
ส่งข้อมูล login ผ่าน method GET
แม่จ้าวววววววววววววววววววววววววววววว!!!!!
เจ๊งแน่นอนครับ ไม่ต้องสืบแล้ว
ถ้าเขียนเองก็เขียนใหม่เลยครับ ถ้าไม่ได้เขียนเองก็บอกให้เขาเขียนใหม่หรือไปจ้างคนอื่นเพราะดูท่าทางจะทำออกมาชุ่ยๆเหมือนเดิม
อีกอย่าง คุณเอาหน้า check login มาแต่คุณไม่ได้เอาหน้าที่บอกว่าเข้าได้โดยไม่ login มา ซึ่งปัญหามันอยู่ตรงนั้นด้วยเหมือนกัน และผมเดาว่าหน้านั้นก็ไม่มีการ check login
ประวัติการแก้ไข 2021-01-22 18:06:15
Date :
2021-01-22 18:02:41
By :
mr.v
หน้า admin_page.php เช็ค SESSION ยังไงครับ
ทุกหน้าต้องเขียนเช็คสิทธิ์ครับ
1. เช็ค SESSION user_id
2. เช็ค SESSION status admin
Date :
2021-01-23 14:01:38
By :
{Cyberman}
เท่าที่ไล่ดูหน้าอื่นๆ ไม่มี session เลยครับ กรณีแบบนี้ถ้าเราใส่ session เพิ่มเข้าไปจะช่วยได้ไหมครับ
Date :
2021-01-25 08:28:07
By :
umat
หน้านี้ครับ เป็นหน้าที่ผมบอกว่าเข้าได้โดยไม่ต้อง login ครับ
<style>
#menu_admin_login_connect{
width:685px;
height:28px;
}
#menu_admin_login_connect ul li{
float:left;
padding:5px 10px 5px 10px;
background:#CCC;
margin-right:3px;
}
#menu_admin_login_connect ul li a{
text-decoration:none;
}
.title_center{
text-align:center;
font-weight:400;
}
tr:hover{
color: #0099CC;
background-color: #CCC;
}
</style>
<script>
$(document).ready( function(){
$('.but_appView_login').click(function() {
var app_id=$(this).attr('id');
var app_sub_id= app_id.length;
var new_app_id = app_id.substring((app_sub_id-5), app_sub_id);
var URL = "admin_login_viewID.php?id_userView="+new_app_id;
var name= "registration";
var width = 700;
var height = 610;
window.open(URL,name,'toolbar=1, menubar=0, location=0,scrollbars=1, resizable=1'+(width?',width='+width:'')+(height?',height='+height:''),true);
});
$('.but_appEdit_login').click(function() {
var app_id=$(this).attr('id');
var app_sub_id= app_id.length;
var new_app_id = app_id.substring((app_sub_id-5), app_sub_id);
var URL = "admin_login_editID.php?id_userView="+new_app_id;
var name= "registration";
var width = 700;
var height = 660;
window.open(URL,name,'toolbar=1, menubar=0, location=0,scrollbars=1, resizable=1'+(width?',width='+width:'')+(height?',height='+height:''),true);
});
$('.but_delsc').click(function() {
var delsc_id=$(this).attr('id');
if (confirm("Are you sure you want to delete?") == true) {
$.post("admin_login_del.php?id_del="+delsc_id, {
}, function(response){
var stre = response;
if(stre==3)
{ alert("Can not be saved.");}
else if(stre==1)
{//alert("ลบเรียบร้อย.");
window.location.reload();
}
});
}
});
});
</script>
<div id="connection_page">
<h1><img src="images/logo_small.png"> admin</h1>
<div id="page_admin_login_view">
<!--//////////////////////////////////////////////////////////////////////////////////////-->
<!--//////////////////////////////////////////////////////////////////////////////////////-->
<div id="menu_admin_login_connect">
<ul>
<li><a href="index.php?action_page=admin_01&username=<?=$username?>&idUser=<?=$idUser?>&status_log=2">ข้อมูลผู้ใช้งานระบบ</a></li>
<li><a href="index.php?action_page=admin_02&username=<?=$username?>&idUser=<?=$idUser?>&status_log=2">บทความ</a></li>
</ul>
</div>
<form name="jour_user_article_register" id="jour_user_article_register" style="border:solid 1px #CCC; background:#FFF;"><br>
<input type="hidden" name="id_edit" id="id_edit" value="<?=$idUser?>" />
<input type="hidden" name="username_edit" id="username_edit" value="<?=$username?>" />
<table border="1" style="width: 684px" >
<tr bgcolor="#0099CC">
<td class="title_center" width="60">ลำดับ</td>
<td class="title_center" width="220">ชื่อ - สกุล</td>
<td class="title_center" width="100">สถานะ</td>
<td class="title_center" width="100">ดูข้อมูล</td>
<td class="title_center" width="100">แก้ไขข้อมูล</td>
<td class="title_center" width="100">ลบข้อมูล</td>
</tr>
<?php
$sql="SELECT * FROM user_login ORDER BY status_user DESC";
$rss=mysql_query($sql);
while ($rs = mysql_fetch_array($rss)) {
$num_run+=1;
if($rs[title]=="1"){$new_title="นาย";};
if($rs[title]=="2"){$new_title="นาง";};
if($rs[title]=="3"){$new_title="นางสาว";};
if($rs[status_user]=="0"){$new_status="User";};
if($rs[status_user]=="1"){$new_status="Admin";};
?>
<tr>
<td class="title_center"><?php echo $num_run; ?></td>
<td><?php echo $new_title." ".$rs[firstName]." ".$rs[lastName]; ?></td>
<td><?php echo $new_status; ?></td>
<td class="title_center"><img src="images/page_white_magnify.png" class="but_appView_login" name="ap<?php echo $rs[id_user]; ?>" id="uu<?php echo $rs[id_user]; ?>" /></td>
<td class="title_center"><img src="images/page_white_paintbrush.png" class="but_appEdit_login" name="ap<?php echo $rs[id_user]; ?>" id="uu<?php echo $rs[id_user]; ?>"/></td>
<td class="title_center"><img src="images/page_white_delete.png" class="but_delsc" id="<?php echo $rs[id_user];?>"/></td>
</tr>
<?php } ?>
<tr><td> </td></tr>
</table>
</form>
<br />
</div>
</div><!--//<div id="connection_page">-->
Date :
2021-01-25 08:38:55
By :
umat
ป่วยการที่จะเขียนให้ดู ถ้าคุณไปหาอ่าน เรื่อง session คุณจะไม่มาถามหรอกครับ
เพราะมันมีวิธีการเขียน ตัวอย่างการใช้งานพร้อมสรรพ แค่ search และอ่าน ทำตามตัวอย่าง ก็จะเข้าใจ
Date :
2021-01-25 10:02:44
By :
Chaidhanan
ขอบคุณครับ
พอดีได้รับมอบหมายมานะครับ
ตอนแรกคิดว่าถ้าแก้ไขจาก code เดิมได้ก็จะแก้ครับ
แต่เท่าที่ดูน่าจะแก้ยากแล้วครับ คงต้องเขียนใหม่จริง ๆ ครับ
Date :
2021-01-25 11:48:00
By :
umat
ถ้างานเร่งด่วนแค่เพิ่ม include เข้าไปที่หัวไฟล์ ทุกไฟล์ กำหนด session
ตรวจสอบ ถ้าใช่ admin ก็ทำงาน ต่อ ถ้าไม่ใช่ ก็ send error
ส่วนโค๊ดอื่นๆ ก็ค่อยไล่แก้ เอา ว่างๆก็เขียนใหม่ ตรวจสอบ session ก็จะปลอดภัย ไประดับหนึ่ง
เพราะ admin ที่ loging เข้ามาคงไม่ทำลายเวปตัวเองหรอกนะ
Date :
2021-01-25 13:36:34
By :
Chaidhanan
ขอบคุณครับ
เดี๋ยวผมจะลองแก้ไขดูก่อนครับ
Date :
2021-01-25 16:01:44
By :
umat
Load balance : Server 01