Jump to content
BulForum.com

php въпрос за сигурност


po_taka

Recommended Posts

имам sql таблица

с полета text , artisт и id

 

и следния код

 

$sql1 = "UPDATE lyric SET text='$text' WHERE id='$idt'";
mysql_query($sql1) 
or die('Error SQL !'.$sql1.'
'.mysql_error()); 
echo "Готово";
mysql_close();

 

та въпроса ми е

 

Каква трябва да е стойноста на $text , за да се промени и стоиността на artist

логично да е

текстаааааа' , artist='пешо

ама нещо не става, аз ли греша някъде ? или php-то само се самозащитава !?

 

 

ползвам

* Apache 2.0.61

* PHP 5.2.5

* MySQL 5.0.45

* SQLite 3.5.3

* PhpMyAdmin 2.11.2.2

* ZendOptimizer 3.3.0

* SQLiteManager 1.2.0

 

и ако някой има някакво линкче за php сигурност да даде линк моля :)

Link to comment
Share on other sites

За да се промени стойстността на $artist, това се прави в самия PHP kod:

$artist = 'some artist'; :)

Или аз нещо не разбрах въпроса.

В sql заявката не виждам artist да присъства за да промениш това поле в базата. SET ..., artist='$artist'.

Друго - в sql-а сложи обратни кавички около полето text, понеже това е име на тип в mysql и винаги е добре (за запазените думи задължително) тия думи да ги ограждаш:

`text`='$text'.

Също и make sure, че поне си ескейпнал стринговете, които подаваш в ъпдейт sql-a. с mysql_real_escape_string().

Link to comment
Share on other sites

дада обаркал сам този ред

Каква трябва да е стойноста на $text , за да се промени и стоиността на $artist

пред артист няма $.

не съм много сигурен но мисля че питам точно за mysql_real_escape_string() , не сам слагал никакви проверки на ваведения стринг и пак не мога да се хакна :)

 

 

водех се от това

 

	UPDATE users SET Name='$name' WHERE ID=1;

 

Normally, if they had entered $name with single quotes in them, they would be escaped, so MySQL would see this:

 

	UPDATE users SET Name='Joe\'s' WHERE ID=1

 

so that the single quote entered into "Joe's" would not interfere with the query syntax.

 

	UPDATE users SET Name='Joe',Admin='1' WHERE ID=1

 

On the input form, the user would have entered:

 

	Joe',Admin='1

 

As their name, and since the single quotes were not escaped, he or she would be able to actually end the name definition, place in a comma, and set another variable called Admin!

 

The final query with input in blue would look like this:

 

	UPDATE users SET Name='Joe',Admin='1' WHERE ID=1

 

 

EDIT: да стана 10х от това е :)

Link to comment
Share on other sites

Аха, ти питаш принципно за тоя вид атаки, ама не стана ясно че питаш това :) .

Това е най-лесната атака тип SQL injection. Едва ли вече има някъде сървър/скрипт който да е податлив на това. Имам предвид сериозни приложения, защото макар и най-известния метод, напълно непонятно е как все още виждам подобни изпълнения в разни сайтове :blink: . Но за сериозни сайтове, това никога не би било допуснато.

Това, което си прочел е така, но ако при теб не става, явно в конфигурацията на PHP-то ти е включено magic_quotes_gps, което автоматично ескейпва GET/POST/COOKIE параметрите. Препоръчително е това да е off и при нужда да се ескейпват, но по дефолт мисля че е On, може и да се лъжа.

Изключи това и пробвай пак :)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...