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

Форум PHP

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

 

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

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

тема: Безопасность записи данных в файл методом POST
 
 автор: tima2010   (07.05.2010 в 21:35)   письмо автору
 
 

Здравствуйте хотел спросить у вас совета.
Есть код записи данных в файл:

<?php 
$mail 
$_POST['mail'];
$name $_POST['name'];
$msg $_POST['msg'];


$mail str_replace('--'' - - '$mail);
$mail str_replace('\"''"'$mail);
$mail htmlspecialchars(stripslashes($mail)); 
$name str_replace('--'' - - '$name);
$name str_replace('\"''"'$name);
$name htmlspecialchars(stripslashes($name)); 

$msg str_replace('--'' - - '$msg);
$msg str_replace('\"''"'$msg);
$msg nl2br($msg);
$msg htmlspecialchars(stripslashes($msg)); 
$msg preg_replace("/[\r\n]{2,}/i"""$msg);

$file fopen("base.txt""a");  
fwrite($file$mail."--".$name."--".$msg."\r\n"); 
?>
<meta http-equiv='refresh' content='0; url=http://site.ru'>


безопасен ли данный код, и какие еще меры стоит применить к нему?
заранее спасибо!

  Ответить  
 
 автор: Рома   (07.05.2010 в 23:32)   письмо автору
 
   для: tima2010   (07.05.2010 в 21:35)
 

/

  Ответить  
 
 автор: Николай2357   (08.05.2010 в 06:47)   письмо автору
 
   для: tima2010   (07.05.2010 в 21:35)
 

А можно Вас попросить прокомментировать этот код?
Очень любопытен ход мысли, приведший к такому алгоритму..
Видимо я что то в этой жизни упустил, раз не могу понять.

Для чего это:
<?
$mail 
str_replace('--'' - - '$mail);

и это...
<?
$mail 
str_replace('\"''"'$mail); 
$mail htmlspecialchars(stripslashes($mail)); 

а дальше опять тоже самое..
<?
$name 
str_replace('--'' - - '$name); 
$name str_replace('\"''"'$name);


и дальше.... Можно пару комментариев коду?

  Ответить  
 
 автор: tima2010   (10.05.2010 в 13:59)   письмо автору
 
   для: Николай2357   (08.05.2010 в 06:47)
 

Да конечно


<?php  
$mail 
$_POST['mail'];  // переданные данные загоняем в перменную
$name $_POST['name']; 
$msg $_POST['msg']; 


$mail str_replace('--'' - - '$mail);  // на случай если в данных будет двойное -- то заменяем его тере с пробелми так как тере используется как разделитель данных в txt файле
$mail str_replace('\"''"'$mail); // такое вот решение с кавычками
$mail htmlspecialchars(stripslashes($mail));  
$name str_replace('--'' - - '$name); 
$name str_replace('\"''"'$name); 
$name htmlspecialchars(stripslashes($name));  // преобразовываем все спец символы

$msg str_replace('--'' - - '$msg); 
$msg str_replace('\"''"'$msg); 
$msg nl2br($msg); 
$msg htmlspecialchars(stripslashes($msg));  
$msg preg_replace("/[\r\n]{2,}/i"""$msg);  // убираем лишние ентеры из textarea 

$file fopen("base.txt""a");   \\ открываем и записываем
fwrite
($file$mail."--".$name."--".$msg."\r\n");  // записываем переменные  в виде данные--данные2 где -- это разделитель данных
?> 
<meta http-equiv='refresh' content='0; url=http://site.ru'>

ну так как по поводу безопасности?

  Ответить  
 
 автор: Ури Геллер   (10.05.2010 в 15:18)   письмо автору
 
   для: tima2010   (07.05.2010 в 21:35)
 

Можно в качестве разделителя использовать | и заменят его на &#124; так можно вводить вообще любые символы

  Ответить  
 
 автор: Trianon   (10.05.2010 в 16:08)   письмо автору
 
   для: Ури Геллер   (10.05.2010 в 15:18)
 

а искать их потом среди текста - как?

деревянных пуль не хватает.

  Ответить  
 
 автор: tima2010   (10.05.2010 в 16:46)   письмо автору
 
   для: Trianon   (10.05.2010 в 16:08)
 

а зачем их искать, скрипт пусть сам ищет при выводе:

<? 
$arr
=file("base.txt");$c=count($arr); 
for(
$i=$c-1;$i>=0;$i--){ 
$row=explode('--',$arr[$i]);  
?>
<?=$row
[0];?><br>
<?=$row[1];?><br>
<?=$row[2];?><br>
<? 
}
?>


Ну все же спецы товарищи, что скажете по поводу безопасности записи данных таким методом?

  Ответить  
 
 автор: Николай2357   (10.05.2010 в 23:11)   письмо автору
 
   для: tima2010   (10.05.2010 в 16:46)
 

Разделители, это отдельная головная боль. Для начала попробуйте проанализировать этот участок
<?
$mail 
str_replace('\"''"'$mail); // такое вот решение с кавычками 
$mail htmlspecialchars(stripslashes($mail));   
$name str_replace('--'' - - '$name);  
$name str_replace('\"''"'$name); 


Сделать это не сложно. Вот так:
<?
$mail 
'"Кавычка"';

echo 
$mail str_replace('\"''"'$mail); // такое вот решение с кавычками 
echo $mail stripslashes($mail);
echo 
$mail htmlspecialchars($mail);

и дальше. Только смотреть метаморфозы нужно в "исходном коде" браузера, не на экране.

  Ответить  
 
 автор: Бамси   (10.05.2010 в 17:36)   письмо автору
 
   для: tima2010   (07.05.2010 в 21:35)
 

Вы же в файл записываете, а не в бомба-убежище на случай атомной войны.

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

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