الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هذا الكود امن لادخال البيانات للقاعدة؟

بدأه SPRAY في 20 سبتمبر 2011 · 3 رد · 673 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ارجو من خبراء امن البي اتش بي الاطلاع على الكود التالي، هل هو امن لاستخدامه في ادخال البيانات من الزوار للقاعدة ام يحتاج لتعديل واضافات؟

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "explorerForm")) {
  $insertSQL = sprintf("INSERT INTO explorers (firstName, lastName, dob, email, address, city, `state`) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['firstname'], "text"),
                       GetSQLValueString($_POST['lastname'], "text"),
                       GetSQLValueString($_POST['dob'], "date"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['address'], "text"),
                       GetSQLValueString($_POST['city'], "text"),
                       GetSQLValueString($_POST['state'], "text"));

  mysql_select_db($database_explorecalifornia, $explorecalifornia);
  $Result1 = mysql_query($insertSQL, $explorecalifornia) or die(mysql_error());

  $insertGoTo = "explorerlist.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

وشكراً

تم تعديل هذه المشاركة بواسطة SPRAY في 21 سبتمبر 2011 في 00:45

#2

افيدونا بارك الله فيكم، عندي مشروع منتهي ومتوقف على تأمين سلامة البيانات المدخله واريد فنكشن كهذه تضمن ادخال بيانات غير ضارة، فهل هذه تكفي ام تحتاج لتعديلات؟

#3

يعطيك العافية أخي SPRAY وربي يوفقك يارب بمشروووعك ..

أهي لنكون واقيعين لايوجد هناك حماية 100% لأي مدخلات ..

أما بالنسبة لكودك فهو أمن إن شاء الله تعالى .. اسمحلي بإضافة هذه على التابع ..

	case "double":
  	$theValue = ($theValue != "") ? doubleval(str_replace(",","",$theValue)) : "NULL";
  	break;

وهي تعديل على قيمة double .

اما الباقي بهي أمنة من SQL Injection .

موفق ان شاء الله تعالى

#4

بارك الله فيك اخي La Martir وشكراً لاضافتك القيمه

قلت انها آمنه من SQL Injection

ماذا عن بقية اساليب الاختراق واساءة الاستخدام المعروفه هل هي امنه منها ام لا؟

اريد التوصل لفنكشن او عدة فنكشنز واسلوب ادخال يوفرون التأمين اللازم للبيانات المدخلة من انواع اساءة الاستخدام المعروفة، لأستخدمهم بمشاريعي وانا مطمئن البال

مواضيع مشابهة