حمايه المدخلات جننتني
السلام عليكم ورحمه الله وبركاته ،،
انا عندي جدول لمحتوي المقالات بأسم content الان اقم بكتابه هذا الامر علي المدخلات $content = mysql_real_escape_string($_POST['content']);تمام ياشباب بيحصل عده اشياء اولها تحويل علامات ال " و ' الي / هذا اول مشكله واذا قمت باذاله الامر ليصبح $content = $_POST['content'];وعند كتابه كود اتش تي ام ال وليكن كود فورم به <input type='text'> يظهر لي الفورم في صفحه عرض المقال وعند استخدام دوال اخري مثل strip_tags يغيرلي مظهر المقال بعد اضافته مثل تغير نوع الخط او لونه او او او .. ياريت داله حمايه ياشباب وتكون مجربه + تطلعلي شكل المقال كما هو مدخل مثل المنتديات منتظركم شباب ..
3 إجابات
مشكورين شباب تم تطبيق الشروحات وجميعهم افادني وحل مشكله ال " " واظهار الكود كما هو وليس الفورم ..
ولكن المشكله الان تواجهني مشكله عند اضافه محرر خاص للصفحه مثل MarkItUp او اي شئ اخر عند عمليه الادخال لا يقم بقراءه حقل المقال اما عند تركيب TinyMce فقط يقوم بقراءه الحقل .. ياريت ياشباب شرح اضافه محررات اخري غير tinymce بواسطة: Wolvrine 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا 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 3 من 3 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا طريقة جيدة
السلام عليكم
مشكلتك هى الـ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 2 من 2 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا |
رجاء مراجعة هذه المشكلة "الماجيك كوتس"
17 / يناير / 2012 الساعة 20:14
بالنسبة بدالة strip_tags اقراء "هذا حقائق يجب عليك أن تعلم بها عن دالة strip_tags"
17 / يناير / 2012 الساعة 20:16
حتى تظهر اكواد الهتميل كنص عليك استعمال htmlspecialchars بدلا من strip_tags
17 / يناير / 2012 الساعة 20:17
الحمد لله شباب تم حل المشكله الاخيره بازاله كود الجدول عن المحرر وعاد للعمل بشكل طبيعي وبشكل جيد تسلموا للمساعده شباب
18 / يناير / 2012 الساعة 23:37