Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита от инъекций
 
 автор: Eduard777   (16.01.2011 в 12:39)   письмо автору
 
 

Читал много статей и литературы по защите таблиц MySQL. Пробовал сам делать инъекции защита выстояла, но хочу сказать сразу, у меня нет опыта в этой области.
У меня вот такой вопрос. Можно ли кодом приведенным ниже исключить SQL инъекции.
Если нет, то каким образом сделать защиту лучше. Заранее большое спасибо.


<!-- Формы ввода forms.php -->
<?PHP 
if(!empty($_POST))
        {
        include(
"forms2.php");
        }
?>
 
<table width="950" align="center" border="0" cellpadding="5" cellspacing="0" >
<form enctype='multipart/form-data' method="POST" >
  <tr>
    <td align="center" valign="middle" class="colorText" colspan="2">
        <?PHP 
        
if (!empty ($error))
                {
                print 
"<p class=colorWarning>$error</p>";
                }
        
?>            
        </td>
  </tr>
  <tr>
        <td height="30" align="right" valign="middle" >
        <span class="colorNameForm">Фамилия<font color="#FF0000">*</font></span>
        </td>
        <td height="30" align="left" valign="middle" >
        <input size="35" type="text" class="colorEnterForm" name="family" maxlength="30" <?PHP echo "value=$family"?>>
        </td>   
  </tr>  
  <tr>
        <td height="30" align="right" valign="middle" >
        <span class="colorNameForm">Телефон<font color="#FF0000">*</font></span>        
        </td>
        <td height="30" align="left" valign="middle" >
        <input size="35" type="text" class="colorEnterForm" name="phone" maxlength="50" <?PHP echo "value='$phone'"?>>
        </td>   
  </tr>
</form>
</table>
 
 
 
<!-- Обработчик HTML-формы forms2.php -->
<?PHP           
$family 
trim(htmlspecialchars($_POST['family']));     
$phone trim(htmlspecialchars($_POST['phone']));
        
//фамилия
if (empty($family)){$error "Пожалуйста введите вашу фамилию"; return;}                        
if (!
preg_match("|^[\w\-\. ]+$|i"$family)){$error "Не верный формат фамилии"; return;}
 
//номер контактного телефона
if (empty($phone)){$error "Пожалуйста введите номер контактного телефона"; return;}
 
//соединения с MySQL сервером
include("connect.php");
 
//директива magic_quotes_gpc
if (ini_get("magic_quotes_gpc"))
        {
        
$phone stripcslashes($phone);
        }
//экранируем спецсимволы mysql_real_escape_string
$phone mysql_real_escape_string($phone);
 
//==============================
//заносим данные в MySQL таблицу
//==============================
 
//закрытие соединения с MySQL сервером          
mysql_close ($db);
 
        }
?>

  Ответить  
 
 автор: cheops   (16.01.2011 в 12:56)   письмо автору
 
   для: Eduard777   (16.01.2011 в 12:39)
 

Да, можно (все корректно), если поле phone является строковым, а не числовым.

  Ответить  
 
 автор: Trianon   (16.01.2011 в 13:06)   письмо автору
 
   для: Eduard777   (16.01.2011 в 12:39)
 

выбор в данном контексте stripcslashes вместо stripslashes как минимум сомнителен.
ну и ini_get("magic_quotes_gpc") вместо get_magic_quotes_gpc() тоже уверенности не вселяет.
А ну как переменную уберут, как и обещали?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования