التعقيم الخلية المستخدم المعلمات
-
04-07-2019 - |
سؤال
ما هي الشخصيات الخطرة التي ينبغي أن تكون محل في إدخال المستخدم عند المستخدمين إدخال سيتم إدراجها في MySQL query ؟ أنا أعرف عن اقتباسات, ونقلت مزدوجة ،
.هل هناك غيرها ؟
(ليس لدي خيار استخدام موصل الذكية التي تقبل المعلمات لذلك يجب أن بناء الاستعلام عن نفسي و هذا سيتم تنفيذها في لغات البرمجة متعددة ، بما في ذلك بعض تلك الغامضة حتى حلول مثل mysql_real_escape_string
في PHP غير صالحة)
المحلول
mysql_real_escape_string() من mysql.com مستندات:
سلسلة من هو ترميز هرب سلسلة SQL, مع الأخذ بعين الاعتبار الطابع الحالي مجموعة الاتصال.والنتيجة هي وضعها في أن إنهاء null byte هو إلحاق.الأحرف المشفرة هي NUL (ASCII 0), " ", " ", "\", "'", """, والتحكم-Z (انظر القسم 8.1, "قيم حرفية").(بالمعنى الدقيق للكلمة ، الخلية يتطلب فقط أن مائل و اقتبس شخصية تستخدم اقتباس السلسلة في الاستعلام يكون هرب.هذه الوظيفة ونقلت الشخصيات الأخرى لجعلها أسهل في القراءة في ملفات السجل.)
mysql_real_escape_string() هو مجموعة الأحرف على علم ، حتى تكرار كل قدراته (وخاصة ضد متعددة البايت الهجوم المسائل) ليست كمية صغيرة من العمل.
من http://cognifty.com/blog.entry/id=6/addslashes_dont_call_it_a_comeback.html:
AS = addslashes() MRES = mysql_real_escape_string() ACS = addcslashes() //called with "\\\000\n\r'\"\032%_" ميزة MRES ACS escapes quote, double quote, and backslash yes yes yes escapes LIKE modifiers: underscore, percent no no yes escapes with single quotes instead of backslash no yes*1 no character-set aware no yes*2 no prevents multi-byte attacks no yes*3 no
نصائح أخرى
ما هي اللغات التي تحتاج إلى دعم؟ هو أفضل بكثير لاستخدام الإبراء المدمج في اللغة ومن أن تكتب بنفسك.
وتحرير: وإذا نظرنا mysql_real_escape_string
على php.net:
وmysql_real_escape_string()
يدعو mysql_real_escape_string
وظيفة مكتبة الخلية، والتي بإلحاق الخطوط المائلة العكسية إلى الأحرف التالية: \x00
، \n
، \r
، \
، '
، "
و\x1a