po_taka Posted January 3, 2008 Share Posted January 3, 2008 имам 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 More sharing options...
tedy Posted January 3, 2008 Share Posted January 3, 2008 За да се промени стойстността на $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 More sharing options...
po_taka Posted January 3, 2008 Author Share Posted January 3, 2008 дада обаркал сам този ред Каква трябва да е стойноста на $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 More sharing options...
tedy Posted January 3, 2008 Share Posted January 3, 2008 Аха, ти питаш принципно за тоя вид атаки, ама не стана ясно че питаш това . Това е най-лесната атака тип SQL injection. Едва ли вече има някъде сървър/скрипт който да е податлив на това. Имам предвид сериозни приложения, защото макар и най-известния метод, напълно непонятно е как все още виждам подобни изпълнения в разни сайтове . Но за сериозни сайтове, това никога не би било допуснато. Това, което си прочел е така, но ако при теб не става, явно в конфигурацията на PHP-то ти е включено magic_quotes_gps, което автоматично ескейпва GET/POST/COOKIE параметрите. Препоръчително е това да е off и при нужда да се ескейпват, но по дефолт мисля че е On, може и да се лъжа. Изключи това и пробвай пак Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.