ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

обработка нового поста в форуме
  #1  
Старый 07.05.2006, 19:00
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию обработка нового поста в форуме

обработка нового поста в форуме


достаточно ли пропускать пост через данную функцию чтобы обезопасить форум?
PHP код:
function replaces($val)
{
if (
$val == '') return('');

  
$val htmlspecialchars($val);
  
$val str_replace"\""'"'$val );
  
$val str_replace"`"'"'$val );
  
$val str_replace"'" '"'$val );
  
$val preg_replace"/\\\$/"'$'$val );
  
$val preg_replace"/\r/",, $val );
  
$val stripslashes($val);
  
$val preg_replace"/\\\/"'\'$val );
  
$val nl2br($val);
return(
$val);

при условии что пока что там нет псевдо тегов и смайлов
 
Ответить с цитированием

  #2  
Старый 09.05.2006, 09:25
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

вот моя альтернатива:
PHP код:
$val=str_replace("'""'"$val);
$val=str_replace('"'"""$val);
$val=str_replace(">"">"$val);
$val=str_replace("<""&lt;"$val);
$val=str_replace("`""&#96"$val);
$val=str_replace("\\""\"$val); 
+ nl2br() и этого будет достаточно. В твоем же примере абсолютно ненужным являются строчки
PHP код:
$val str_replace"\""'&quot;'$val );
$val str_replace"'" '&quot;'$val );
$val stripslashes($val); 
Первые две уже обрабатываеются при htmlspecialchars() с флагом ENT_QUOTES вроде. А stripslashes() вообще не нужен, коли ты преобразуешь все ковычки до этого.
Непонятно зачем делаешь:
PHP код:
$val preg_replace"/\r/",, $val ); 
Вообще не понятно. \r и \n абсолютно никак не влияют на отображение html`а. Тем более что ты все равно потом делаешь nl2br().
Не понял зачем нужна
PHP код:
$val preg_replace"/\\\$/"'$'$val ); 
Вообще не понял =)))

Опять же, Дикс, твоя основная ошибка. Опять укажу на нее все тем же анекдотом:
"Береженого бог бережет", - сказала монашка, надивая презерватив на свечку. Проще будь. Начни с того, что разберись, какие именно символы тебе нужно отфильтровать. И уже потом пиши код.

И еще одно. Заменяя двойную, одинарную ковычку и перфекс на &quot;... Ну это короче не правильно. Если я пишу на форуме перфикс, значит я хочу чтобы именно перфикс стоял там, где я его поставлю. А не двойная ковычка, как у тебя. К пример я пишу
Цитата:
I`m very big lamer
, а твой форум выдаст мне
Цитата:
I"m very big lamer
. Не хорошо это
 
Ответить с цитированием

  #3  
Старый 09.05.2006, 20:20
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

ох, Тринукс. даже не знаю как всё объяснить чтоб меня поняли.
имел я глупость поставить перед собой задачу - написать движок сайта да ещё и со внутренним форумом.
ничего подобного раньше не писал, кроме простого форума и простого сайта в отдельности.
да ещё и подпрягся сделать на этом движке сайт для своей тренажёрки, за два месяца бесплатных хождений туда (1100р. экономии)
Вот и мечусь теперь из одного куска кода в другой.
Пишу основу - главные функции, чтобы всё работало, а мелочи типа авторизации или фильтрации постов оставляю на потом. Но чтобы они всё равно уже были,
как ты мог заметить я леплю туда что попало. Ты видел мою тему, где инфа о юзере пишется в куки и читается из них. Таким же образом я выдрал готовый код фильтрации из ExBB, но толком не разобравшись, лишь чуток его подрезал.
Такие тонкости как флаги ENT_QUOTES я если и изучил при прочтении книги, то ещё не успел усвоить и научиться применять.

Допишу основу и начну шлифовать код, тогда ваши советы мне очень и очень помогут.
Большое спасибо, Тринукс, чтоб я без тебя делал =)
 
Ответить с цитированием

  #4  
Старый 09.05.2006, 20:36
Аватар для Che-Guevara
Che-Guevara
Banned
Регистрация: 09.05.2006
Сообщений: 4
Провел на форуме:
21317

Репутация: -6
По умолчанию

2Trinux не злоупотребляй двойными кавычками кстати говоря в большенстве случаев достаточно фильтровать ' и < . Причем первый символ чтобы не было выхода за пределы атрибута value и предотвращения атаки типа sql-inj (есесино при передаче чисел intval() Дополнительно), а второй, чтобы не было возможности вставлять свои теги.
 
Ответить с цитированием

  #5  
Старый 10.05.2006, 00:22
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

2 Che-Guevara
Ты не прав. А что если у меня атрибуты тега заключены не в одинарную ковычку, а в двойную? Значит нужно фильтровать обе. Далее. Перфикс. Как ты уже, надеюсь, знаешь (а знать ты это можешь, почитав инфу на главной странице antichat.ru) перфикс юзается в IE как символ начала\конца комментариев. А значит это реальная опасность вхождения в атрибуты тега. Значит нужно фильтровать и его. Далее, обратная треугольная скобка то е обязательна и то же при нефильтрующемся перфиксе дает несколько больше возможностей. Точнее те же, но в более простой форме. Обратный слеш... ну пишу я, к примеру
Цитата:
abc\tdef
а если не фильтровать его, то получу
Цитата:
abc def
А это уже не хорошо.

2 Дикс
Цитата:
тогда ваши советы мне очень и очень помогут.
Перестань выкать =) не такой я уж и старый =)
 
Ответить с цитированием

  #6  
Старый 10.05.2006, 19:47
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

ещё забыл спросить это зачем?
PHP код:
$val=str_replace("'""'"$val); 
 
Ответить с цитированием

  #7  
Старый 10.05.2006, 19:50
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Цитата:
Перестань выкать =) не такой я уж и старый =)
:d я имел ввиду всех античатовцев
кстати, вам сколько лет?

ещё, извините ламера, что такое "перфикс"? или префикс?
 
Ответить с цитированием

  #8  
Старый 10.05.2006, 20:00
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

Цитата:
ещё забыл спросить это зачем?
Форум сожрал, там та же одинарная ковычка, тольво в десятичной кодировке.
перфикс или префикс - сам ХЗ, но это - `
 
Ответить с цитированием

  #9  
Старый 14.05.2006, 06:25
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

ээ, а каг бы мне узнать десятичную кодировку кавычки?
и ещё интерпретатор выдаёт ошибку на строчке
PHP код:
$val=str_replace("\\""\", $val); 
где б мне узнать десятичный код бэкслеша?
 
Ответить с цитированием

  #10  
Старый 14.05.2006, 10:00
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
и ещё интерпретатор выдаёт ошибку на строчке

PHP код:
$val=str_replace("\\", "\", $val);
писец. писать движок с форумом, не зная основ пхп.

Фтыкай http://us2.php.net/language.types.string до полного всасывания материала.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описание групп на форуме АНТИЧАТ. Версия 0.2 Егорыч+++ Правила форума 2 07.11.2009 02:53
Создание темы и поста в самописном форуме Дикс PHP, PERL, MySQL, JavaScript 13 28.04.2006 16:53



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ