PDA

View Full Version : مشکل عجیب با ارسال مقادیر فرم



iman_pc_love
چهارشنبه 01 اردیبهشت 1389, 00:45 صبح
ببینید یک فرم ساده داریم که یه جعبه متن و یه دکمه submit داره حال اگر کاربر داخل جعبه متن علامت ' (کوتیشین) وارد کند و آن را برای یک فایل php ارسال کنیم. اونوقت بر خلاف تصور متن ارسال شده بجای فقط یه کوتیشن میشه '\
میخاستم ببینم علتش چیه؟

این هم کدهای برنامه



<?php
print $_POST[aj];
?>





<form action="test.php" method="POST">
<p>
<input type="text" name="aj">
</p>
<p>
<input type="submit" name="Submit2" value="Submit">
</p>
</form>

Reza1607
چهارشنبه 01 اردیبهشت 1389, 09:31 صبح
این مشکل نیست بلکه خود php کاراکتر \ رو به تک کوتیشن اضافه می کنه منم دلیلشو دقیقا نمی دونه برای چیه تازه علاوه بر ' کاراکتر \ رو هم به \\ تبدیل می کنه من فکر کنم به خاطر اینه که این کاراکترها جز کاراکترهای خاص هستند

sedamorde
چهارشنبه 01 اردیبهشت 1389, 09:48 صبح
این به خاطر دلایل امنیتی، تابع addslashes هم همین کار را میکنه.
این کار تا حدی میتونه جلوی هک شدن از طریق sql injection را بگیره.

trade_mark
چهارشنبه 01 اردیبهشت 1389, 15:07 عصر
یه مثال برای لاگین کردن افراد
مثلا دستور شما


<?php
$Username = $_POST['Username'];
$Password = $_POST['Password'];
$SQL = "SELECT * FROM `users` WHERE `u_name` = '$Username' AND
`u_pass` = '$Password'";
$Rslt = mysql_query( $SQL);
if( mysql_num_rows( $Rslt) > 0)
{
print('welcome to your profile...');
} else {
die('The specified username and/or password is invalid!');
}
?>بعد کاربر مقادیر زیر رو وارد می کنه

username: a
password: ' or '1'='1پس دستور sql شما می شه

SELECT * FROM `users` WHERE `u_name` = 'a' AND `u_pass` = '' or '1'='1'
و به این می گن یه sql injection