Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

18.12.2007, 13:52
|
|
Участник форума
Регистрация: 09.02.2007
Сообщений: 202
Провел на форуме: 537148
Репутация:
9
|
|
Фильтрация запросов
Привет всем
есть ли такое рег выражение которое не пропустит лишнее в запрос а оставит только
A-z и _ и 0-9
спасибо
|
|
|

18.12.2007, 13:54
|
|
Постоянный
Регистрация: 01.02.2006
Сообщений: 970
Провел на форуме: 9254548
Репутация:
1942
|
|
Код:
htmlspecialchars()
Не нашли? Я подскажу. Введите, например, в поле "имя" двойную кавычку и какой-нибудь текст, например, "123. Отправьте форму, и взгляните на исходный код полученной страницы. В четвертой строке будет что-то наподобие:
Введите Ваше имя: <input type="text" name="name" value=""123">
То есть - ничего хорошего. А если бы хитрый пользователь ввел JavaScript-код?
Для решения этой проблемы необходимо воспользоваться функцией htmlspecialchars(), которая заменит служебные символы на их HTML-представление (например, кавычку - на "):
1. <html>
2. <body>
3. <?
4. $name = isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '';
5. $year = isset($_POST['year']) ? htmlspecialchars($_POST['year']) : '';
6.
7. if (isset($_POST['name'], $_POST['year'])) {
8. if ($_POST['name'] == '') {
9. echo 'Укажите имя!<br>';
10. } else if ($_POST['year'] < 1900 || $_POST['year'] > 2004) {
11. echo 'Укажите год рождения! Допустимый диапазон значений: 1900..2004<br>';
12. } else {
13. echo 'Здравствуйте, ' . $name . '!<br>';
14. $age = 2004 - $_POST['year'];
15. echo 'Вам ' . $age . ' лет<br>';
16. }
17. echo '<hr>';
18. }
19. ?>
20. <form method="post" action="<?=$_SERVER['PHP_SELF']?>">
21. Введите Ваше имя: <input type="text" name="name" value="<?=$name?>">
22. <br>
23. Введите Ваш год рождения: <input type="text" name="year" value="<?=$year?>">
24. <input type="submit" value="OK">
25. </form>
26. </body>
27. </html>
Повторите опыт и убедитесь, что теперь HTML-код корректен.
Запомните - функцию htmlspecialchars() необходимо использовать всегда, когда выводится содержимое переменной, в которой могут присутствовать спецсимволы HTML.
оно?
|
|
|

18.12.2007, 14:04
|
|
Участник форума
Регистрация: 09.02.2007
Сообщений: 202
Провел на форуме: 537148
Репутация:
9
|
|
ну оно но не совсем
эта штука пропустит '
|
|
|

18.12.2007, 14:09
|
|
Leaders of Antichat - Level 4
Регистрация: 11.11.2005
Сообщений: 391
Провел на форуме: 7084941
Репутация:
2277
|
|
PHP код:
<?
if (isset($_GET['param'])) {
preg_match_all('/[a-z0-9_]+/iU', $_GET['param'], $out);
echo "<PRE>";
print_r($out);
echo "</PRE>";
}
?>
Последний раз редактировалось halkfild; 18.12.2007 в 14:29..
|
|
|

18.12.2007, 14:12
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
$pattern = "/[a-zA-Z0-9_]+/iUs";
if (!preg_match($pattern, $some_str, $matches)) die('Fuck!');
|
|
|

18.12.2007, 14:12
|
|
Участник форума
Регистрация: 09.02.2007
Сообщений: 202
Провел на форуме: 537148
Репутация:
9
|
|
О то что надо это можно пременить для безопасности запросов в Sql?
или можно всётаки обойти проверку ? 
|
|
|

18.12.2007, 14:22
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
$pattern = "/[a-zA-Z0-9_]+/iUs";
if (!preg_match($pattern, $some_str, $matches)) die('Fuck!');
$some_str = 'mda\'';
http://ru2.php.net/manual/ru/reference.pcre.pattern.modifiers.php для жирного
^([a-z0-9_])$
|
|
|

18.12.2007, 14:32
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
ENT_QUOTES
вообще достаточно просто данные в помощью mysql_escape_string или mysql_real_escape_string экранировать. другое лишнее.
Последний раз редактировалось GreenBear; 18.12.2007 в 14:34..
|
|
|

18.12.2007, 15:53
|
|
Участник форума
Регистрация: 09.02.2007
Сообщений: 202
Провел на форуме: 537148
Репутация:
9
|
|
Spasibo Vsem!
|
|
|

18.12.2007, 16:11
|
|
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме: 1204641
Репутация:
412
|
|
Интересно, как у автора получилось выучить работу с Sql если задает такие забавные вопросы))
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|