PDA

View Full Version : sqlinjection



Vahid Faraji
پنج شنبه 04 شهریور 1389, 17:47 عصر
معني و مفهوم كد زير چيه؟ آيا مي شه ورودي ها رو با تابع زير فيلتر كنيم منظورم اينه كه اين تابع براي جلوگيري از sqlinjection كافيه؟



function Safe_SQL($Str_Input)
{

if(get_magic_quotes_gpc()): function_exists('mysql_real_escape_string') ? stripslashes(mysql_real_escape_string(&$Str_Input)) : stripslashes(mysql_escape_string(&$Str_Input));
else: function_exists('mysql_real_escape_string') ? addslashes(mysql_real_escape_string(&$Str_Input)) : addslashes(mysql_escape_string(&$Str_Input));
endif;

return($Str_Input);
}

bestirani2
پنج شنبه 04 شهریور 1389, 18:18 عصر
یک کد ساده هست
توی انجمن در این مورد بحث شده

Vahid Faraji
پنج شنبه 04 شهریور 1389, 18:24 عصر
مي شه يه لينك بديد، من يه سري چيزها رو خوندم. نتيجه مشخصي نداشت.

binyaft
پنج شنبه 04 شهریور 1389, 18:35 عصر
en.wikipedia.org/wiki/SQL_injection
www.unixwiz.net/techtips/sql-injection.html
snipplr.com/view/2742/antisql-injection-function/

bestirani2
پنج شنبه 04 شهریور 1389, 18:43 عصر
مي شه يه لينك بديد، من يه سري چيزها رو خوندم. نتيجه مشخصي نداشت.
http://barnamenevis.org/forum/showthread.php?t=174827

Vahid Faraji
پنج شنبه 04 شهریور 1389, 18:43 عصر
en.wikipedia.org/wiki/SQL_injection
www.unixwiz.net/techtips/sql-injection.html
snipplr.com/view/2742/antisql-injection-function/



1.
function cleanuserinput($dirty){
2.
if (get_magic_quotes_gpc()) {
3.
$clean = mysql_real_escape_string(stripslashes($dirty));
4.
}else{
5.
$clean = mysql_real_escape_string($dirty);
6.
}
7.
return $clean;
8.
}
9.


به نظر شما اين روش براي اين كه تمام ورودي هاي سايت رو چه در موقع login يا چه در موقع insert, update, select , ... يك بار به ورودي اين تابع بديم، كافيه؟

Vahid Faraji
پنج شنبه 04 شهریور 1389, 18:51 عصر
http://barnamenevis.org/forum/showthread.php?t=174827

به نظر شما چطوره من تمام ورودي هاي سايتو با اين تابع فيلتر كنم؟


function inputFilter($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
$var = stripslashes($var);
return mysql_real_escape_string($var);
}

Vahid Faraji
پنج شنبه 04 شهریور 1389, 19:32 عصر
از دوستان خواهش مي كنم كمك كنند تا اين بحث بسته بشه، چون هر وقت باز شده، نتيجه قطعي نداشت.

bestirani2
پنج شنبه 04 شهریور 1389, 19:53 عصر
به نظر شما چطوره من تمام ورودي هاي سايتو با اين تابع فيلتر كنم؟


function inputFilter($var)
{
$var = strip_tags($var);
$var = htmlentities($var);
$var = stripslashes($var);
return mysql_real_escape_string($var);
}


میخوای خیالت راحت باشه سمت اس کیو ال هم بررسی انجام بده

SAMAN_PHP
پنج شنبه 04 شهریور 1389, 20:05 عصر
به نظر شما اين روش براي اين كه تمام ورودي هاي سايت رو چه در موقع login يا چه در موقع insert, update, select , ... يك بار به ورودي اين تابع بديم، كافيه؟
بستگی داره به نوع وردیتون ممکن بعضی جاها نباید همه کارکترها را فیلتر کرد

htmlentities
تابع بالایی برای غیر فعال کردن کارکترهای html


این تابع هم کلا کارکترهای htmlوjsرو حذف میکنه

strip_tags



به نظر شما چطوره من تمام ورودي هاي سايتو با اين تابع فيلتر كنم؟
قبل از استفاده از وردی اونو از تابع زیر رد کن
مثلا:


$var=inputFilter($_POST['name']);

rapidpich
جمعه 05 شهریور 1389, 11:36 صبح
اول اسکریپت اینو بکن:



$var = stripslashes($var);


البته در صورتیکه magic_quotes روشنه، کل GET و POST و کوکی رو
هرجا با database کار داری از real_escape استفاده کن

این کاریه که وردپرس میکنه

parselearn
جمعه 05 شهریور 1389, 13:11 عصر
یه نمونه اینجا هست که ورودی ها رو چک میکنه
http://barnamenevis.org/forum/showthread.php?t=174827&page=3&highlight=sqli