Bright Moon 653 ارسال شده در اردیبهشت 93 گزارش بازنشر ارسال شده در اردیبهشت 93 سلام.بازم سوال مربوط به cms تمرینی و جدید و مربوط به ادامه مطلباز صفحه اول وقتی میخوام لینک به ادامه مطلب بدم، با متد get آیدی اون مطلب(ریکورد) رو میفرستم به صفحه سینگل.حالا از اونجایی که داخل صفحه سینگل اون آی دی رو میگیرم و باهاش به mysql درخواست فچ میدم، ممکنه کاربر یه سری دستورات اضافه انتهای همون متد بزنه که به دیتابیس نفوذ کنه.برای پیشگیری از این نفوذ به فکر خودم اینطور رسید که داخل صفحه سینگل اول ورودی get رو بریزم داخل یک متغیر. یه عمل ریاضی روش اجام بدم (مثلاً با 1 جمع کنم). بعد حاصل رو یه مقایسه انجام بدم(مثلا اگر بزرگتر از 1 و کوچتر از 100000بود).حالا عمل ریاضی رو برگرونم و مقدارش رو بزارم توی کوئری mysql. اینطوری میتونم تا حدودی مطمئن بشم که متد دریافتی من فقط عدد بوده...اگر ممکنه راه بهتری رو بهم نشون بدید.مشکل این ایده منم بگید.ممنون نقل قول لینک به ارسال
استاد اعظم 900 ارسال شده در اردیبهشت 93 گزارش بازنشر ارسال شده در اردیبهشت 93 برای اینکه مطمئن بشی مقداری یک عدد هست میتونی از تابع is_numeric استفاده کنی ، اگر ورودیش عدد بود مقدار true و اگر نبود false را برمیگیرداند 1 نقل قول لینک به ارسال
vahab 33 ارسال شده در اردیبهشت 93 گزارش بازنشر ارسال شده در اردیبهشت 93 اگه تولید لینک یکتا برای هر ادامه مطلب مد نظرتون نیست با SESSION ارسال کنید 3 نقل قول لینک به ارسال
Bright Moon 653 ارسال شده در اردیبهشت 93 مالک گزارش بازنشر ارسال شده در اردیبهشت 93 برای اینکه مطمئن بشی مقداری یک عدد هست میتونی از تابع is_numeric استفاده کنی ، اگر ورودیش عدد بود مقدار true و اگر نبود false را برمیگیرداندبله ممنونسوال بنده اینه که آیا همین چک کردن نوع ورودی، امنیت کافی رو به ما میده؟اگه تولید لینک یکتا برای هر ادامه مطلب مد نظرتون نیست با SESSION ارسال کنیدممنون دوست عزیزاما خب "لینک برای ادامه مطلب" حتماً نیاز به لینک یکتایی که فرمودید داره.دقیقاً کاربر تنها با آدرس وارد کردن باید بتونه دسترسی به صفحه مطلب رو داشته باشه. نقل قول لینک به ارسال
Mobin 1669 ارسال شده در اردیبهشت 93 گزارش بازنشر ارسال شده در اردیبهشت 93 شما میتونین 2 تا کار انجام بدید1. مقادیر رو به صورت پارامتر به دیتابیس ارسال کنید مثلا اگه از pdo استفاده میکنید با استفاده از تابع prepare و execute استفاده کنید2.قبل از ارسال مقدار به کوئری اونو اعتبار سنجی کنید مثلا با استفاده از تابع is_numeric یا با استفاده از ریجکس \d+ اونو اعتبار سنجی کنید 2 نقل قول لینک به ارسال
thinkdiff 30 ارسال شده در اردیبهشت 93 گزارش بازنشر ارسال شده در اردیبهشت 93 ببینید اگر می خواید مقدار ارسالی در get رو بگید ، خوب بالا خره یک چیزی در url میره و اگر کاربر با تغییر اونا بخواد وارد بشه خوب بهش 404 میدهاما اگر م یخواید از تزریق sql جلوگیری کنید از توابع امنیتی html_specialchar و real_scape_string استفاده کنید. 1 نقل قول لینک به ارسال
Bright Moon 653 ارسال شده در اردیبهشت 93 مالک گزارش بازنشر ارسال شده در اردیبهشت 93 شما میتونین 2 تا کار انجام بدید1. مقادیر رو به صورت پارامتر به دیتابیس ارسال کنید مثلا اگه از pdo استفاده میکنید با استفاده از تابع prepare و execute استفاده کنیدممنون وایپر جانمنم در مورد پارامتر شنیده بودم.امکانش هست برای کار با پارامتر توضیحات بیشتر بدید؟یا یه لینک مفید...متشکر نقل قول لینک به ارسال
Mobin 1669 ارسال شده در خرداد 93 گزارش بازنشر ارسال شده در خرداد 93 مثال[color=#000000][color=#0000BB]<?php[/color][color=#FF8000]/* Execute a prepared statement by passing an array of insert values */[/color][color=#0000BB]$calories [/color][color=#007700]= [/color][color=#0000BB]150[/color][color=#007700];[/color][color=#0000BB]$colour [/color][color=#007700]= [/color][color=#DD0000]'red'[/color][color=#007700];[/color][color=#0000BB]$sth [/color][color=#007700]= [/color][color=#0000BB]$dbh[/color][color=#007700]->[/color][color=#0000BB]prepare[/color][color=#007700]([/color][color=#DD0000]'SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'[/color][color=#007700]);[/color][color=#0000BB]$sth[/color][color=#007700]->[/color][color=#0000BB]execute[/color][color=#007700](array([/color][color=#0000BB]$calories[/color][color=#007700], [/color][color=#0000BB]$colour[/color][color=#007700]));[/color][color=#0000BB]?>[/color] [/color] http://www.php.net/manual/en/pdostatement.bindparam.phphttp://www.php.net/manual/en/pdo.prepare.php نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .