Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Прости меня мама - я быдлокодер

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: в чём мои ошибки
nordghost
Отправлено: 14 Апреля, 2012 - 02:45:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Вот пример гостевой книги, хотел бы спросить у опытных людей где я набыдлокодил где есть дыры в безопасности данного скрипта и как оптимизировать код:

index.php

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. </head>
  6. <body>
  7.     <form name="answers" action="getinfo.php" method="POST">
  8.         <p>Ваше имя:         <input type="text" name="uname"/>
  9.         </p>
  10.         <p>Ваше e-mail:         <input type="text" name="mail"/>
  11.         </p>
  12.         <p>Введите сообщение</p>
  13.             <textarea cols="40" rows="10" name="coment">
  14.             </textarea>
  15.        
  16.         </p>
  17.         <input type="submit" value="Оставить отзыв"/>
  18.     </form>
  19. <?php
  20.    $host='localhost';
  21.    $user='root';
  22.    $pwd='';
  23.    $conn=mysql_connect($host, $user, $pwd) or die (mysql_error());
  24.    mysql_select_db('gbook') or die (mysql_error());
  25.    $result=mysql_query("SELECT * FROM msgs") or die (mysql_error());
  26.    mysql_close($conn);
  27.    while($rand=mysql_fetch_assoc($result)){
  28.        echo "<div style='border:1px solid grey; width:300px; margin:10px;'>
  29.                    <div style='background-color:grey; color:white; text-align:center; width:300px; height:20px;'>$rand[name]</div>
  30.                    <div>$rand[msg]                            
  31.                            <a href='getinfo.php?del=$rand[id]'>Удалить</a>
  32.                            </div>
  33.            
  34.                </div>";
  35.        
  36.    }
  37. ?>
  38. </body>
  39. </html>
  40.  


getinfo.php

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $host='localhost';
  4. $user='root';
  5. $pwd='';
  6.     if($_SERVER['REQUEST_METHOD']=="POST"){
  7. $name=trim(strip_tags($_POST['uname']));
  8. $mail=trim(strip_tags($_POST['mail']));
  9. $text=trim(strip_tags($_POST['coment']));
  10.     $conn=mysql_connect($host, $user, $pwd) or die (mysql_error());
  11.     mysql_select_db('gbook') or die (mysql_error());
  12.     mysql_query("INSERT INTO msgs( name, email, msg ) VALUES ('$name', '$mail', '$text') ") or die (mysql_error());
  13.     mysql_close($conn);
  14.    
  15. }else {
  16.     $id=$_GET['del'];
  17.    $conn=mysql_connect($host, $user, $pwd) or die(mysql_error());
  18.    mysql_select_db('gbook') or die (mysql_error());
  19.    mysql_query("DELETE FROM msgs WHERE msgs.id='$id'") or die (mysql_error());
  20. }
  21. header("Location: index.php");
  22. ?>
  23.  


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
DelphinPRO
Отправлено: 14 Апреля, 2012 - 03:21:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




от xss худо-бедно защитились, а про sql-injection забыли Улыбка
попробуйте перейти по ссылке
CODE (text):
скопировать код в буфер обмена
  1. index.php?del=1' or 1 = 1 or 1 = '1

и вся ваша таблица очистится Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 14 Апреля, 2012 - 03:23:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




nordghost пишет:
$text=trim(strip_tags($_POST['coment']));
лучше использовать htmlspecialchars()
это позволит писать куски кода в тексте
nordghost пишет:
die (mysql_error());
это используется только при разработке
юзеру не надо знать подробностей
просто вывод типа "Сори, база сдохла.Приходите послезавтра."
nordghost пишет:
}else {
$id=$_GET['del'];
PHP:
скопировать код в буфер обмена
  1. }elseif (isset($_GET['del'])) {
  2.     $id=(int)$_GET['del'];
надо же предусмотреть ручной вызов от какого-нибудь шалуна
nordghost пишет:
$rand[name]
это вообще непонятно как работает
надо {$rand[name]}
(Добавление)
а вот и наш шалун)))
 
 Top
nordghost
Отправлено: 14 Апреля, 2012 - 14:13:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 319
Дата рег-ции: Окт. 2011  


Помог: 3 раз(а)




Спасибо огромное всё понял и поисправлял)) теперь буду знать)


-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB