PDA

View Full Version : کمک در طراحی سایت php



xrezax
یک شنبه 22 مرداد 1391, 19:56 عصر
دوستان من یک سایت با php نوشتم اما راحت با Sql Injection هک میشه.
چیکار کنم ؟؟؟؟؟؟؟

ravand
یک شنبه 22 مرداد 1391, 23:04 عصر
ما اول باید بدونیم چجوری سایت شما هک میشه؟
و مشکل امنیتیش چی هستش.

xrezax
یک شنبه 22 مرداد 1391, 23:22 عصر
وقتی یک خبر را باز می کنیم به این آدرس هدایت میشیم

http://localhost/news/news_view.php?id=4

وقتی یک ' آخز می زارم یعنی اینجوری

'http://localhost/news/news_view.php?id=4

سایت اررور میده و اینجکت میشه.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' ORDER BY id DESC' at line 1

راهی داره به جای این آدرس

http://localhost/news/news_view.php?id=4

اونو اینجوری تبدیل کنم

http://localhost/news/news_view.php?id=4.html

M.Rahi
دوشنبه 23 مرداد 1391, 10:24 صبح
باید از htaccess برای تغییر url ها استفاده کنید.
همچنین از تابع addslashes برای اضافه کردن اسلش به متغیرها قبل از ذخیره در دیتابیس استفاده کنید.

موفق باشید

xrezax
دوشنبه 23 مرداد 1391, 10:52 صبح
میشه سورس برای htaccess قرار بدید.

برای addslashes یه راهنمایی دقیق بکنید ممنون میشم

ravand
دوشنبه 23 مرداد 1391, 14:34 عصر
اصلا نیازی به روش هایی که دیگر دوستان میگن نیست.

باید از htaccess برای تغییر url ها استفاده کنید.
این روش باعث میشه بازدید کننده از سایت آدرسی که id دارد رو تشخیص ندهد ولی کمکی برای جلوگیری از هک شدن نمیکنه. شاید اگه هکر یه کم وقت بیشتری بذاره بتونه ادرس اصلی رو پیدا کنه.
بهترین راه حل استفاده از تابع is_numeric هست. با استفاده از این تابع میشه بررسی کرد که مقدار داده شده به id عدد هست یا نیست؟
به روش زیر:

if((!isset($_GET["id"])) or ($_GET["id"]=="") or (!is_numeric($_GET["id"]))){
header("Location:HTTP/1.0 404 Not Found");
exit;
}else{
$sql =$_GET['id'];
}
دستورات بالا میگه اگه مقداری برای id انتخاب نشده باشد یا مقدار ارسالی خالی باشد یا مقدار داده شده مخالف عدد باشد یعنی عدد نباشد. مثلا دستور ' باشد برو به خطای 404 و از برنامه خارج شو. وگرنه ادامه بده. و مقدار رو به متغییر بده.

back door
دوشنبه 23 مرداد 1391, 15:00 عصر
ببخشید این ارور برای چیه

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/****/**/x.php on line 45

farhadfery
سه شنبه 24 مرداد 1391, 10:31 صبح
اینجا را ببینید. شاید جواب سوال شما باشه:
http://stackoverflow.com/questions/7104608/warning-mysql-num-rows-supplied-argument-is-not-a-valid-mysql-result-resourc
--------------------