لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
حمايه المدخلات جننتني
السلام عليكم ورحمه الله وبركاته ،،
انا عندي جدول لمحتوي المقالات بأسم content

الان اقم بكتابه هذا الامر علي المدخلات
$content = mysql_real_escape_string($_POST['content']);
تمام ياشباب بيحصل عده اشياء اولها تحويل علامات ال " و ' الي / هذا اول مشكله واذا قمت باذاله الامر ليصبح
$content = $_POST['content'];
وعند كتابه كود اتش تي ام ال وليكن كود فورم به
<input type='text'>


يظهر لي الفورم في صفحه عرض المقال
وعند استخدام دوال اخري مثل
strip_tags
يغيرلي مظهر المقال بعد اضافته مثل تغير نوع الخط او لونه او او او ..
ياريت داله حمايه ياشباب وتكون مجربه + تطلعلي شكل المقال كما هو مدخل مثل المنتديات

منتظركم شباب ..
تاريخ البداية: 17 / يناير / 2012 الساعة 19:45 اخر نشاط: 18 / يناير / 2012 الساعة 23:37 php ماجيك كوتس

رجاء مراجعة هذه المشكلة "الماجيك كوتس"
17 / يناير / 2012 الساعة 20:14

بالنسبة بدالة strip_tags اقراء "هذا حقائق يجب عليك أن تعلم بها عن دالة strip_tags"
17 / يناير / 2012 الساعة 20:16

حتى تظهر اكواد الهتميل كنص عليك استعمال htmlspecialchars بدلا من strip_tags
17 / يناير / 2012 الساعة 20:17

الحمد لله شباب تم حل المشكله الاخيره بازاله كود الجدول عن المحرر وعاد للعمل بشكل طبيعي وبشكل جيد تسلموا للمساعده شباب
18 / يناير / 2012 الساعة 23:37

3 إجابات
مشكورين شباب تم تطبيق الشروحات وجميعهم افادني وحل مشكله ال " " واظهار الكود كما هو وليس الفورم ..
ولكن المشكله الان
تواجهني مشكله عند اضافه محرر خاص للصفحه مثل MarkItUp او اي شئ اخر عند عمليه الادخال لا يقم بقراءه حقل المقال
اما عند تركيب TinyMce فقط يقوم بقراءه الحقل ..
ياريت ياشباب شرح اضافه محررات اخري غير tinymce

بواسطة: Wolvrine
منذ: 18 / يناير / 2012 الساعة 20:28

function anti_xss($str)
{
  $str = htmlentities($str);
  $str = mysql_real_escape_string($str);
  if(get_magic_quotes_gpc())
  {
  $str = stripslashes($str);
  }
  return $str ;
}
و يمكنك إضافة الترميز
function anti_xss($str)
{
  $str = htmlentities($str , ENT_QUOTES, "UTF-8");
  $str = mysql_real_escape_string($str);
  if(get_magic_quotes_gpc())
  {
  $str = stripslashes($str);
  }
  return $str ;
}

بواسطة: mohroubla
منذ: 18 / يناير / 2012 الساعة 18:4

طريقة جيدة
18 / يناير / 2012 الساعة 18:41

السلام عليكم
مشكلتك هى الـMagic Quotes التى تم الغائها تماما فى الاصداء 5.3.0 وعندهم حق صراحة
,
افضل حل لذلك هى قفلها والغائها عن طريق php.ini وان لم يكن لك التصريح يوجد حلول اخرى

اولا الغائها من الـphp.ini
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
او عن طريق الـ.htaccess
php_flag magic_quotes_gpc Off
او افضل طريقة بهم عن طريق هذا الكود تضعه فى اول الاكواد تنفيذا فى الاسكربت الخاص بك
if (get_magic_quotes_gpc()) {
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process)) {
        foreach ($val as $k => $v) {
            unset($process[$key][$k]);
            if (is_array($v)) {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            } else {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}
هذه راح تحل مشكلتك ولكن يبقى كيف يتم حماية المدخلات الى قاعدة البيانات ، وهذا يتم عن طريق تمرير المتغير غير الرقمى لدالة mysql_real_escape_string هذا مثال لاستعمالها فى الحماية
<?php
// الاتصال
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// الاستعلام
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>
وهذا مثال اختراق فى حالة عدم الحماية
<?php
// لم نقم بوضع الحماية اللازمة على $_POST
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// والان نبحث عن تطابق بين المدخلات والجداول
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// وهذا معناه الاستعلام المرسل الى قاعدة البيانات سيمثل كارثة مثل
echo $query;
?>

بواسطة: molhm
منذ: 17 / يناير / 2012 الساعة 20:13

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة