Проверка полей формы на добавление несанкционированного кода, как реализовать?

12 3
P
На сайте с 06.01.2009
Offline
601
1286

Здравствуйте. Прошу поделиться, если у кого есть наработки. Хочется защититься от добавления alertов (читал где то) и различного возможного вирусного кода, редиректов и т.д.

Спасибо заранее.

На текущий момент реализовал только такой код.


if (!$_POST['zapros']) $err.="Вы не заполнили поле запрос<br>";
if (strlen($_POST['zapros']) <90) $err.="Запрос слишком короткий, подробнее, пожалуйста. Укажите сроки в которые материал нужен, цвет, размеры, порог цены, любые характеристики на которые стоит ориентироваться...<br>";
if (preg_match("/[0-9a-zA-Zа-яА-ЯЁё]{20,}/",$_POST['zapros'],$matches)) {
$err.="В запросе присутствует слишком длинное слово ".$matches[0].". Cократите или разбейте его, пожалуйста.";
}
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

strip_tags

и если идёт добавление в БД, то mysql_real_escape_string

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
bukachuk
На сайте с 07.09.2008
Offline
97
#2

Используйте isset в условиях, Ваш код вызовет предупреждения. Всегда проверяйте наличие переменной перед действиями над ней, если она не была объявлена ранее.

mysql_real_escape_string никак не защитит данные, а лишь заэкранирует спецсимволы. И его невсегда нужно использовать, зависит от параметров сервера.

Программирование PHP,Mysql (/ru/forum/934470)
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#3
Всегда проверяйте

А иначе:

Ваш код вызовет предупреждения.

А не пофиг?

bukachuk
На сайте с 07.09.2008
Offline
97
#4
LEOnidUKG:
А иначе:



А не пофиг?

Ну не красиво же:D

P
На сайте с 06.01.2009
Offline
601
#5

Подскажите, пожалуйста.

Поскольку все перевожу на кодировку utf-8

сделал такую строку в форме

<form action="zapros.php" method="POST" accept-charset="utf-8">

после заполнения формы данные добавляются в таблицу БД.

Но вот как сделал accept-charset="utf-8", теперь в таблице - иероглифы...ЧТо не так? Спасибо

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#6
bukachuk:
Ну не красиво же:D

В продакшене отключаются все уведомление, даже от фатальных ошибок. Поэтому смысла на бессмысленные проверки нету 🍿

P
На сайте с 06.01.2009
Offline
601
#7

Я опять запутался. Прошу подсказать, что я не так настроил.

1. бд - utf8

2. таблица бд - поле "Сравнение" - значение "utf8_general_ci"

3. все файлы php сайта - кодировка utf-8 без BOM

4. форма добавления -

<form action="forma.php" method="POST" accept-charset="utf-8">

но проблема - либо данные записываются в таблицу иероглифами, либо если поставить

<form action="forma.php" method="POST" accept-charset="windows-1251">
то в форме эти поля ромбами

<td width="400" height="60" valign="top"><input type=text name=companyname size="45" value='<? echo $_POST['companyname'] ?>'>...
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#8

Офигеть вопросы из разных областей :)

А сайт то сам хоть в utf8?

P
На сайте с 06.01.2009
Offline
601
#9
LEOnidUKG:
Офигеть вопросы из разных областей :)


А сайт то сам хоть в utf8?

<meta http-equiv="Content-Type" content="text; charset=utf-8" />

Извините, я просто не пойму в чем проблема с кодировкой...

HomerJSimspon
На сайте с 18.09.2012
Offline
2
#10

postavkin,

Способы:

1. mysql_query("SET NAMES utf8"); — сразу после подключения скрипта к БД.

2. Когда добавляете в базу, скажем, значение поля field, попробуйте:

$field = iconv('windows-1251', 'UTF-8', $_POST['field']);

3. Убедитесь, что сайт в кодировке UTF-8.

4. Убедитесь, что файл в кодировке UTF-8.

Пишу PHP-скрипты, делаю сайты, интернет-магазины, работаю с joomla, dle, wordpress. () Микро-кредит нннадо (/ru/forum/751204)? ICQ#: 778324.
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий