PDA

View Full Version : بهترین تابع بررسی اطلاعات وارد شده از نظر امنیتی



Mohajerx
شنبه 03 آذر 1386, 06:02 صبح
الان این تابع ها رو داریم و یکسری دیگر.
mysql_real_escape_string
htmlspecialchars
htmlentities
addslashes

با توجه به اینکه تابع های فراوانی رو داریم ( البته درسته هر کدوم به یک نحوی کار میکنند اما به هر حال باعث میشه مشخص نشه کدوم رو باید استفاده کرد که بهتر باشه. )

من میخوام به یک روش امن و ثابت ورودی ها رو چک کنم که :
از نظر تزریق مشکلی وجود نداشته باشد
از نظر کدهای HTML و JavaScript نیز امنیت کافی در حد کاربر با سطح معمولی برقرار باشد.

به نظرتون به اینصورت عمل کردن هم برای جلوگیری از تزریق و استفاده ایمن از کدهای html مناسب است ؟ :


mysql_real_escape_string(htmlspecialchars($var))


قرار هست اطلاعات وارد دیتابیس بشود و بعد هم در صفحه ای نمایش داده شود ( یک سیستم دریافت نظرات کاربران )

Folaani
شنبه 03 آذر 1386, 13:10 عصر
تقریبا مناسبه. البته روشهای مختلفی رو میشه بکار گرفت. بسته به شرایط و نیازها هست.
مثلا ممکنه لازم ببینیم اطلاعات رو فقط موقع نمایش با تابع htmlspecialchars آماده کنیم و چیزی که در دیتابیس ثبت میشه دقیقا همون ورودی باشه! فرضا شما چنین دیتایی رو که قبلا تبدیل شده اگر بخواید در یک فرمت SGML ای درج کنید باید دوباره تبدیلش کنید که نمیدونم ساده هست یا نه و دقیقا تابعی براش هست یا نه.
بهرحال.
ضمنا درج در کد جاوااسکریپت فکر کنم یه جاهایی نیاز به addslashes داشته باشه.
بهرحال شاید نشه همهء اینها رو یکباره اعمال کرد موقع ذخیرهء دیتا. علاوه بر مشکلات تبدیلی احتمالی، ممکنه بقدر کافی هم از نظر بهینگی معقول نباشه.
ضمنا برای MySQL فقط از mysql_real_escape_string استفاده کنید، توابع خود پی اچ پی مناسب اینکار نیستن، گرچه ظاهرا یک کار یکسان انجام میدن ولی یکسری نکات ریز داره. این تابع هم بعدا اضافه شده و در ورژنهای پایینتر نبوده ظاهرا.
مهم اینه که شما این توابع رو فراموش نکنید و در جای مناسب خودشون بکار ببرید. حالا اگر کارتون کوچک و موردی هست، میتونید از روشهای راحتتر استفاده کنید.
مشکلی و نکته یا سوالی بنظرتون میرسه بگید تا روش فکر کنیم. چون اینا رو سریع و با تجربهء شخصی و چیزهایی که یادم بود نوشتم. ممکنه زیاد صحیح و جالب نگفته باشم.