|
|
|
รบกวนช่วยดู Code ให้หน่อยครับว่าเขียน Code แบบนี้สามารถป้องกัน sql injection ได้หรือเปล่า |
|
|
|
|
|
|
|
Code (PHP)
<?
switch ($command){
case "ADD_Sec":
if ($_FILES['file']['size']>0) {
//if ($file!="") {
$JFile=$_FILES['file']['name'];
$realname =date("dmYss").$JFile;
if (copy ($_FILES['file']['tmp_name'],"files/$realname")) {}
}
$sql1="SELECT * FROM omp ORDER BY sort DESC ";
$query=mysql_query($sql1);
$row=mysql_fetch_array($query);
$SORTID = $row[sort]+1 ;
$sql="INSERT INTO opm SET name_b='$name_b',Position='$Position',url='$url',file='$realname',sort ='$SORTID',add_date=NOW()";
$query=mysql_query($sql);
if($query){
echo "<script>alert('บันทึกข้อมูลเรียบร้อยแล้วค่ะ');window.opener.location.reload(); window.close();</script>";
}else{
echo "<script>alert('ไม่สามารถบันทึกข้อมูลได้ค่ะ');window.opener.location.reload(); window.close();</script>";
}
break;
case "EDIT_Sec":
if ($_FILES['file']['size']>0) {
$JFile2=$_FILES['file']['name'];
//$JFile2 =substr($JFile2, -4);
$realname2 =date("dsmssYs").$JFile2;
if (copy ($_FILES['file']['tmp_name'],"files/$realname2")) {$where_2=" , file='$realname2' ";}
}
$sql="UPDATE omp SET name_b='$name_b',Position='$Position',url='$url' WHERE idb ='".mysql_real_escape_string($idb)."'";
// echo ($sql);
$query=mysql_query($sql);
if($query){
echo "<script>alert('แก้ไขข้อมูลเรียบร้อยแล้วค่ะ');window.opener.location.reload(); window.close();</script>";
}else{
echo "<script>alert('ไม่สามารถแก้ไขข้อมูลได้ค่ะ');window.opener.location.reload(); window.close();</script>";
}
break;
case "DELSEC":
$sql="DELETE FROM omp WHERE idb ='".mysql_real_escape_string($idb)."'";
$query=mysql_query($sql);
if($query){
@unlink("files/$file");
showMessage("ลบข้อมูลเรียบร้อยแล้วค่ะ","list_menu_cat.php?Position=$Position");
}else{
showMessage("ไม่สามารถลบข้อมูลได้ค่ะ","list_menu_cat.php?idb=$idb");
}
break;
case "UPDATESTATUS":
if($now_status=="Y"){
$new_status="N";
}else{
$new_status="Y";
}
$sql="UPDATE omp SET h_show='$new_status' WHERE idb ='".mysql_real_escape_string($idb)."'";
$query=mysql_query($sql);
if($query){
echo "<script>alert('เปลี่ยนสถานนะเรียบร้อยแล้วค่ะ');window.opener.location.reload(); window.close();</script>";
}else{
echo "<script>alert('ไม่สามารถเปลี่ยนสถานะได้ค่ะ');window.opener.location.reload(); window.close();</script>";
}
}
?>
Tag : PHP
|
ประวัติการแก้ไข 2021-11-22 19:08:30 2021-11-22 19:09:09
|
|
|
|
|
Date :
2021-11-22 08:57:31 |
By :
sannoi371 |
View :
484 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คลุมแท็ก php ได้ไหม?
|
|
|
|
|
Date :
2021-11-22 09:51:22 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2021-11-22 09:51:22
รายละเอียดของการตอบ ::
... แก้ให้แล้วนะครับ รบกวนดูให้หน่อยนะครับ ขอบคุณครับ.......
Code (PHP)
<?
switch ($command){
case "ADD_Sec":
if ($_FILES['file']['size']>0) {
//if ($file!="") {
$JFile=$_FILES['file']['name'];
$realname =date("dmYss").$JFile;
if (copy ($_FILES['file']['tmp_name'],"files/$realname")) {}
}
$sql1="SELECT * FROM omp ORDER BY sort DESC ";
$query=mysql_query($sql1);
$row=mysql_fetch_array($query);
$SORTID = $row[sort]+1 ;
$sql="INSERT INTO opm SET name_b='$name_b',Position='$Position',url='$url',file='$realname',sort ='$SORTID',add_date=NOW()";
$query=mysql_query($sql);
if($query){
echo "<script>alert('บันทึกข้อมูลเรียบร้อยแล้วค่ะ');window.opener.location.reload(); window.close();</script>";
}else{
echo "<script>alert('ไม่สามารถบันทึกข้อมูลได้ค่ะ');window.opener.location.reload(); window.close();</script>";
}
break;
case "EDIT_Sec":
if ($_FILES['file']['size']>0) {
$JFile2=$_FILES['file']['name'];
//$JFile2 =substr($JFile2, -4);
$realname2 =date("dsmssYs").$JFile2;
if (copy ($_FILES['file']['tmp_name'],"files/$realname2")) {$where_2=" , file='$realname2' ";}
}
$sql="UPDATE omp SET name_b='$name_b',Position='$Position',url='$url' WHERE idb ='".mysql_real_escape_string($idb)."'";
// echo ($sql);
$query=mysql_query($sql);
if($query){
echo "<script>alert('แก้ไขข้อมูลเรียบร้อยแล้วค่ะ');window.opener.location.reload(); window.close();</script>";
}else{
echo "<script>alert('ไม่สามารถแก้ไขข้อมูลได้ค่ะ');window.opener.location.reload(); window.close();</script>";
}
break;
case "DELSEC":
$sql="DELETE FROM omp WHERE idb ='".mysql_real_escape_string($idb)."'";
$query=mysql_query($sql);
if($query){
@unlink("files/$file");
showMessage("ลบข้อมูลเรียบร้อยแล้วค่ะ","list_menu_cat.php?Position=$Position");
}else{
showMessage("ไม่สามารถลบข้อมูลได้ค่ะ","list_menu_cat.php?idb=$idb");
}
break;
case "UPDATESTATUS":
if($now_status=="Y"){
$new_status="N";
}else{
$new_status="Y";
}
$sql="UPDATE omp SET h_show='$new_status' WHERE idb ='".mysql_real_escape_string($idb)."'";
$query=mysql_query($sql);
if($query){
echo "<script>alert('เปลี่ยนสถานนะเรียบร้อยแล้วค่ะ');window.opener.location.reload(); window.close();</script>";
}else{
echo "<script>alert('ไม่สามารถเปลี่ยนสถานะได้ค่ะ');window.opener.location.reload(); window.close();</script>";
}
}
?>
|
|
|
|
|
Date :
2021-11-22 19:10:12 |
By :
sannoi371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. เขาให้เลิกใช้ mysql_xxx function มานานมากกกกกกกแล้วนะครับ กระทู้ก็ปักอยู่ด้านบนสุด https://www.thaicreate.com/php/forum/095986.html <-- อันนี้.
2. ตัวแปรหลายตัวไม่มีที่มาเลย อยู่ๆนึกจะเรียกใช้ก็เรียก เช่น $Position, $url ที่ไม่เจอ error เพราะไปปิด error อยู่แหงๆ. วิธีเขียนโปรแกรมโดยปิด error นั้นผิด!! ควรจะเปิดซะให้หมดเพื่อแก้ไขระวังช่องโหว่และข้อผิดพลาดต่างๆได้ดีขึ้น.
3. การต่อสตริงนั้นไม่ควรเลย โดยเฉพาะอย่างยิ่งหลายๆตัวไม่มีแม้แต่การ escape เพราะฉะนั้นไม่รอด SQL injection.
4. การป้องกัน SQL injection ที่ดีที่สุดคือใช้ prepare ไม่ใช่ escape string. อ่านเพิ่มเติม -> https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php
|
|
|
|
|
Date :
2021-11-22 19:18:02 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|