Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   -=FILTRATION=- (https://forum.antichat.xyz/showthread.php?t=142722)

vorona 21.09.2009 10:41

-=FILTRATION=-
 
Как нада фильтровать вводимые данные, если нада разрешить все символы? :confused:

Krist_ALL 21.09.2009 10:55

Сам то понял что сказал?

vorona 21.09.2009 11:01

Цитата:

Сообщение от Krist_ALL
Сам то понял что сказал?

А что здесь понимать то? Нада, чтоб были разрешены все спец символы. ЧТо в таком случае нада фильтровать? Точнее как фильтровать гет или пост - запрос извне, в котором разрешены спец символы.

Krist_ALL 21.09.2009 11:34

Куда идут данные?
в sql запрос? инклуд?
Если данные постом передаются , то пост фильтровать.
Если гетом, то гет....че тут сложного.
Куда идут данные?
в sql запрос? инклуд?

oldsugar 21.09.2009 12:20

Цитата:

Сообщение от vorona
Как нада фильтровать вводимые данные, если нада разрешить все символы? :confused:

strip_tags
htmlspecialchars
strip_slashes

Doom123 21.09.2009 12:40

oldsugar

Цитата:

strip_tags
мда....

ChieFSS 21.09.2009 12:45

Цитата:

Сообщение от vorona
Как нада фильтровать вводимые данные, если нада разрешить все символы? :confused:

А к какому языку относится вопрос?
Если к php, то достаточно использования mysql_real_escape_string (mysql_escape_string), а при выводе уже фильтровать (htmlspecialchars, например).

Вообще, при добавлении в mysql фильтровать вообще ничего не надо.
Лучше добавлять данные в чистом виде.

m0Hze 21.09.2009 12:47

Цитата:

Сообщение от ChieFSS
А к какому языку относится вопрос?
Если к php, то достаточно использования mysql_real_escape_string (mysql_escape_string), а при выводе уже фильтровать (htmlspecialchars, например).

Вообще, при добавлении в mysql фильтровать вообще ничего не надо.
Лучше добавлять данные в чистом виде.

Да! Скули придумали чтобы нас пугать,забей на них, %username%!

vorona 21.09.2009 13:06

Цитата:

Сообщение от Krist_ALL
Куда идут данные?
в sql запрос? инклуд?
Если данные постом передаются , то пост фильтровать.
Если гетом, то гет....че тут сложного.
Куда идут данные?
в sql запрос? инклуд?

ну например запись в файл.

vorona 21.09.2009 13:09

Вобщем, попробую вопрос по другому сформулировать:
достаточно ли фильтрации одной htmlspecialchars для данных, в которых должны быть разрешены все спец. символы?

ChieFSS 21.09.2009 13:20

Цитата:

Сообщение от vorona
Вобщем, попробую вопрос по другому сформулировать:
достаточно ли фильтрации одной htmlspecialchars для данных, в которых должны быть разрешены все спец. символы?

Для файла да.

Doom123 21.09.2009 15:10

m0Hze фильтрация и экранирование не одно и тоже ;)

Chaak 21.09.2009 16:21

Допустим все данные из формы A сохраняются в файл B и выводятся на экран в строку C.

A:
Цитата:

<script>alert('xss')</script>
Затем эта форма передается на скрипт и сохраняется в файл C.
Фильтровать на сохранении ничего не надо, достаточно правильно обработать выводимую из файла строку C функцией htmlspecialchars(B);


Т.е вывод - фильтровать на выходе из файла.

vorona 23.09.2009 20:02

А нулево

vorona 23.09.2009 20:03

й байт и прочяя херня?

b3 23.09.2009 20:49

vorona
ты о чем? Выражайся яснее, и думай прежде чем писать, может тогда получится выражатся одним постом.

vorona 23.09.2009 20:56

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

b3 23.09.2009 21:37

Смотря для чего, если вводимые данные не будут касаться БД то хватит, иначе по обстоятельствам нужно addslashes() и на выводе stripcslashes()
ЗЫ если ты имел ввиду фильтрацию от NULL байта, то ею болеет только функции eregi() которых в пхп6 небудет уже

vorona 23.09.2009 22:24

Их полностью не будет? ЧТо, все кода менять или что?

b3 23.09.2009 23:12

Небудет, использование их в коде будет вызывать ошибку Ядра.
Цитата:

все кода менять или что?
Изначально ненадо было их юзать =)

Qwazar 23.09.2009 23:18

Цитата:

Сообщение от vorona
Как нада фильтровать вводимые данные, если нада разрешить все символы? :confused:

Входные данные никак фильтровать не надо. Нужно экранировать спецсимволы когда подставляешь данные в запрос, и прогонять через htmlspecialchars, когда выводишь на экран.

b3 23.09.2009 23:29

Цитата:

и прогонять через htmlspecialchars, когда выводишь на экран.
если до этого данные обрамлялись addslashes() то на выводе тоже нужно делать stripslashes(), это для Вороны заметка, иначе юзвер регнет ник O'Neal а отображаться будет как O\'Neal

Qwazar 23.09.2009 23:45

Цитата:

Сообщение от b3
если до этого данные обрамлялись addslashes() то на выводе тоже нужно делать stripslashes(), это для Вороны заметка, иначе юзвер регнет ник O'Neal а отображаться будет как O\'Neal

Дык вообще массово данные никак обрамлять не надо, тогда и проблем не будет. Экранировать надо только непосредственно в запросе.

vorona 23.09.2009 23:50

а что, htmlspecialchars нельзя применять перед записью в файл?

L I G A 24.09.2009 22:05

Цитата:

Сообщение от vorona
а что, htmlspecialchars нельзя применять перед записью в файл?

зачем искажать данные?

vorona 24.09.2009 23:11

ну разницы ж то никакой. искажишь ты их до записи или после.

b3 25.09.2009 03:15

Цитата:

ну разницы ж то никакой. искажишь ты их до записи или после.
Ты ничего не понял, никто их не искажает, просто при выводе в браузер нада заменить HTML тэга на аналоги, чтоб небыло XSS или ифреймов к примеру, а при записи в файл фильтровать незачем. При записи в БД нужно обрамлять ковычки, дабы небыло подзапросов, к примеру есть форма для ввода логина и пароля которая не фильтруется, пример:
Цитата:

$sql = "SELECT user,password FROM `users` WHERE user=$_POST['user'] and password = $_POST['password']";
В таком случае можно будет ввести логин: 1' OR 1=1 1 и любое значение в пароль, и авторизация будет успешной, поетому в таких местах стоит экранировать ковычки функцией addslashes();

ЗЫ в примере могут быть ошибки, пишу как говорится "с коленки" но смысл думаю понятен.

vorona 25.09.2009 09:33

Цитата:

Сообщение от b3
Ты ничего не понял, никто их не искажает, просто при выводе в браузер нада заменить HTML тэга на аналоги, чтоб небыло XSS или ифреймов к примеру, а при записи в файл фильтровать незачем. При записи в БД нужно обрамлять ковычки, дабы небыло подзапросов, к примеру есть форма для ввода логина и пароля которая не фильтруется, пример:

В таком случае можно будет ввести логин: 1' OR 1=1 1 и любое значение в пароль, и авторизация будет успешной, поетому в таких местах стоит экранировать ковычки функцией addslashes();

ЗЫ в примере могут быть ошибки, пишу как говорится "с коленки" но смысл думаю понятен.

понял. спс.

и ещётакой вопросик:
как с помощью цыкла пройти по всем ГЕТ или ПОСТ запросам, которые поступили в скрипт?

vorona 25.09.2009 09:34

и такой:
какую форму, кроме \0 может принимать нулевой байт в пхп?

d_x 25.09.2009 09:36

Например, так:
PHP код:

foreach($_GET as $key => $value)
{
  
$_GET[$key] = что_то_делаем($value);


Аналогично с $_POST, $_COOKIE.

А нулевой байт он везде нулевой байт. chr(0).

vorona 25.09.2009 09:47

Цитата:

Сообщение от d_x
Например, так:
PHP код:

foreach($_GET as $key => $value)
{
  
$_GET[$key] = что_то_делаем($value);


Аналогично с $_POST, $_COOKIE.

А нулевой байт он везде нулевой байт. chr(0).

Спасибо!

vorona 25.09.2009 10:46

кодировка спец символов в %hex как-то защищает?

L I G A 25.09.2009 17:26

Цитата:

Сообщение от vorona
ну разницы ж то никакой. искажишь ты их до записи или после.

разница есть.
К примеру ты захотел заменить все <,>, ' etc...
но нифига не выйдет потому как в файле будет вместо <,>- &lt;&gt;

vorona 25.09.2009 22:04

Цитата:

Сообщение от L I G A
разница есть.
К примеру ты захотел заменить все <,>, ' etc...
но нифига не выйдет потому как в файле будет вместо <,>- &lt;&gt;

ясн

vorona 26.09.2009 09:19

Цитата:

Сообщение от vorona
кодировка спец символов в %hex как-то защищает?

???

vorona 27.09.2009 16:27

защищает?

Doom123 27.09.2009 16:40

d_x Оо а array_map на что ? ...

ТС не парься при выведе на страницу делай htmlspecialchars();

а при вставкев sql запрос делай чтото типо

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));

и всё будет отлично ... не будь параноиком ...

vorona 28.09.2009 20:19

ну лишняя защита не помешает = )

vorona 01.10.2009 16:07

Цитата:

Сообщение от vorona
кодировка спец символов в %hex как-то защищает?

?&

vorona 07.10.2009 09:42

ну ответтьте пжлст


Время: 01:53