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 :: Безопасный ввод текста [3]

 PHP.SU

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


 Страниц (7): « 1 2 [3] 4 5 6 7 »   

> Без описания
LIME
Отправлено: 27 Июля, 2012 - 12:42:55
Post Id


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


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


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




ну у тебя же на все свой взгляд))
дядькам не веришь))
можно причем легко даже в браузере
 
 Top
просто даня
Отправлено: 27 Июля, 2012 - 12:44:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Март 2012  
Откуда: sev-kav, budennovsk


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

[+][+]


короче просто так же филтровать и селект через preg_match как и остольные поля в оброботчике формы при регистрации и в личном кабинете? так да??)
 
 Top
pvm741
Отправлено: 27 Июля, 2012 - 18:00:40
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Июнь 2012  


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




я например делаю так валидацыю, но возникла одна проблема, в некоторое текстовые поля надо ввести название или имя в кабычках, то етот метод вводит во базу &quot Название &quot

$value = htmlspecialchars($value);
$value = mysql_real_escape_string($value)
if (get_magic_quotes_gpc()) {$value = stripslashes(trim($value));}
if (!preg_match("|^[0-9]+$|",$str1)) {$error=1;}
if($error==1) {exit('Date validation!!! Try again!');}
// else {SQL запрос на ввод данныx в базу}

И когда експортируеш базу данных в excel остаются &quot вместо двунарных кобычек. Что делат? Да и &quot занимает дополнителное место в varchar полях на базе.
 
 Top
LIME
Отправлено: 27 Июля, 2012 - 18:11:28
Post Id


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


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


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




http://php.su/articles/?cat=phpd...;page=010#part_4 часть 4
параметры передаются как переменные и кавычки можно не экранить и не преобразовывать в мнемоники
 
 Top
armancho7777777 Супермодератор
Отправлено: 27 Июля, 2012 - 18:14:03
Post Id



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


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


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




Ответ касается обоих случаев:
составьте массив допустимых предпологаемых значений (так называемый белый список)
и проверяйте на соответствие при получении.
И конечно же до обработки функцией htmlspecialchars()
Пример:
PHP:
скопировать код в буфер обмена
  1. $whiteList = array('Москва' => 1, 'Питер' => 1, 'Лондон' => 1);
  2.  
  3. if(!isset($whiteList[$_POST['sity']])) exit('NO !!!');

Массив можно создать из полученных значений соответствующих полей таблицы БД.

(Отредактировано автором: 27 Июля, 2012 - 18:21:16)

 
 Top
pvm741
Отправлено: 27 Июля, 2012 - 18:19:23
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Июнь 2012  


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




LIME пишет:
http://php.su/articles/?cat=phpd...;page=010#part_4 часть 4
параметры передаются как переменные и кавычки можно не экранить и не преобразовывать в мнемоники


сылка неоткрываеся
 
 Top
LIME
Отправлено: 27 Июля, 2012 - 18:19:59
Post Id


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


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


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




ну придумай что-нибудь))
 
 Top
pvm741
Отправлено: 27 Июля, 2012 - 18:25:40
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Июнь 2012  


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




armancho7777777 пишет:
Ответ касается обоих случаев:
составьте массив допустимых предпологаемых значений (так называемый белый список)
и проверяйте на соответствие при получении.
И конечно же до обработки функцией htmlspecialchars()
Пример:
PHP:
скопировать код в буфер обмена
  1. $whiteList = array('Москва' => 1, 'Питер' => 1, 'Лондон' => 1);
  2.  
  3. if(!isset($whiteList[$_POST['sity']])) exit('NO !!!');


тут не тот случий, в текстовые поля нужно будет ввести любой текс: буквы, зыфры, знаки препинания .,;-+- и конечно двухнарные кобычки "
Вот функцыя htmlspecialchars мне наделает проблем, когда я вытаскивыюdaнные в txt фаил или еxcel. Да и если слова состоит из 50 симболов, то в базу литят дополнителные симболы если есть кобычки в словаx &quotслово&quot
 
 Top
LIME
Отправлено: 27 Июля, 2012 - 18:27:08
Post Id


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


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


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




ехехех
скопируй ссылку и убери редирект
 
 Top
pvm741
Отправлено: 27 Июля, 2012 - 18:29:17
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Июнь 2012  


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




LIME пишет:
ехехех
скопируй ссылку и убери редирект


уже разобрался
 
 Top
armancho7777777 Супермодератор
Отправлено: 27 Июля, 2012 - 18:35:10
Post Id



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


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


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




pvm741, функция htmlspecialchars() используется при выводе:

а при записи в БД:
Это для начала.
Ну а далее, читайте о mysqli.
Ссылку Вам уже скинули.

(Отредактировано автором: 27 Июля, 2012 - 18:37:04)

 
 Top
tuareg
Отправлено: 27 Июля, 2012 - 18:39:57
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




Да не будет профита от использования prepare statement. Даже наоборот хуже будет. Не для этого они предназначены.(Не совсем для этого Улыбка ). Вам вполне хватит mysql_real_escape_string().

(Отредактировано автором: 27 Июля, 2012 - 18:41:20)

 
 Top
LIME
Отправлено: 27 Июля, 2012 - 18:42:39
Post Id


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


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


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




tuareg а разве экранирование не сохранится при экспорте? а?
и чем хуже будет препаре?
 
 Top
tuareg
Отправлено: 27 Июля, 2012 - 18:50:48
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


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




LIME пишет:
а разве экранирование не сохранится при экспорте?

Сейчас еще разик тему прочитаю. Улыбка
LIME пишет:
и чем хуже будет препаре?

Принцип работы в общих чертах. и разница
Простой запрос. Сервер mySQL получил строку распарсил ее и выполнил.
При препере он парсит строку 2 раза. Сначала при получении и потом при сохранении.
Теперь дальше. Это не страшно когда следом(в этом же соединении) идет аналогичный запрос. Тогда да профит будет особенно если запросов много (цикличный запрос). Но если это только один запрос, то просто трата ресурсов сервера. Причем после окончания соединения (скрипт php отработал), все сохраненные prepare скидываются. Это в общих чертах, мог где-то напутать с терминами.
 
 Top
LIME
Отправлено: 27 Июля, 2012 - 18:55:52
Post Id


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


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


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




ну это все понятно но как еще занести кавычки безопасно?
к тому же это предложение для ознакомления
к тому же не думаю что намного напрежется сервер)
пусть тс думает
 
 Top
Страниц (7): « 1 2 [3] 4 5 6 7 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB