Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
mhibert
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 4
#1

РНР Безопасность. Хэширование - PHP

28.12.2017, 06:21. Просмотров 156. Ответов 5
Метки нет (Все метки)

Всем Привет!

Я работаю на данный момент над курсовой по теме "Генератор Хэш функций". Столкнулся с такой проблемой, что после санитизации и проверки хтмл форм, сообщение введенное пользователем видоизменяется и база данных заполняется некорректными хэшами.

Например:

алгоритм = мд5
сообщение = m (введенное пользователем сообщение)
хэш = h (хэш функция)

PHP
1
m = [B]<script>alert('example');</sctipt>[/B] - > видоизменяет в (после санитизации и проверки введенного текста ) -> [B]&lt;script&gt;alert('test');&lt;/script&lt[/B];
h(m) != 'h(m)

Как вы можете видить, две абсолютно разных хэши.

Вопрос: какие методы вы могли бы подсказать, чтобы сохранить безопасности против разного рода инъекции. А также правильно заполнить базуданных???

Большое спасибо и надеюсь получить ответ в скором времени!
Майк Хайберт
http://www.cyberforum.ru/php/thread621133.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2017, 06:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос РНР Безопасность. Хэширование (PHP):

Помогите розобратса в РНР
Доброе утрро! Вот уже 3 день никак не могу розобратса с ошибкой в файле РНР....

функция session_is_registered РНР 5.3
При вбиваний логина и пароля не осуществляется вход. Из за перехода на РНР 5.3...

Почему РНР лучше С?
Всем привет. Прочитал в одной старой книге что при использование CGI,...

Друзья сделайте за меня код на рнр!
Задача1.В данном файле, содержащем целые числа, определить элемент с...

Нужно записать текст из РНР в WORD
Дорогие гении подскажите пожалуйста как мне записать из РНР текст в Word....

5
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
28.12.2017, 07:46 #2
Цитата Сообщение от mhibert Посмотреть сообщение
после санитизации
для создания хэша "санитизация" не нужна. функция хэширования сама является прекрасным "санитизатором"(если я правильно понял значение этого слова)
ps: если хэширование используется для проверки паролей, вместо md5 я бы рекомендовал использовать пару функций password_hash и password_verify специально для этого созданых
0
mhibert
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 4
28.12.2017, 08:34  [ТС] #3
Нет, Санитизация происходит, тогда когда пользователь отправляет данные на сервер через html форму, чтобы избежать различного рода инъекций. Результат проходит через хэш функции и далее отправляется в базу данных, где записывается ввиде слово/текст md5/хэш.

Проблема, в том что сообщение меняется после санитизации и хэш соотвественно.
0
otto-fukin
8 / 44 / 17
Регистрация: 15.06.2017
Сообщений: 382
28.12.2017, 08:40 #4
Цитата Сообщение от mhibert Посмотреть сообщение
избежать различного рода инъекций. Результат проходит через хэш функции
хэш в любом случае не будет содержать инъекций. С санитизацией или без неё, инъекций не будет. Но если она вам так важна, тогда перед сравнением хэшей, проводите такую же процедуру санитизации для проверяемой строки.
0
mhibert
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 4
28.12.2017, 08:49  [ТС] #5
Если оставить санитизацию, хэш измениться и будет не логично оставлять другой хэш. Если убрать санитизацию, тогда все будет в порядке с заполнением базы данных и хэши будут соотвествовать словам. Однако, без санитизации полностью пропадает безопасность приложения так как атаки станут доступны, например XSS.

Если я ошибаюсь, плз поправте меня и предложите другие варианты решение этой проблемы.
0
little endian
-25 / 5 / 5
Регистрация: 21.12.2017
Сообщений: 59
29.12.2017, 04:25 #6
Лучший ответ Сообщение было отмечено mhibert как решение

Решение

Цитата Сообщение от mhibert Посмотреть сообщение
Если оставить санитизацию, хэш измениться и будет не логично оставлять другой хэш. Если убрать санитизацию, тогда все будет в порядке с заполнением базы данных и хэши будут соотвествовать словам. Однако, без санитизации полностью пропадает безопасность приложения так как атаки станут доступны, например XSS.
Если я ошибаюсь, плз поправте меня и предложите другие варианты решение этой проблемы.
XSS прекрасно тушится заменой html-символов:
PHP
1
array('&','<','>',"'",'"','_','`','$','%','\\','/*','*/','//','--'); //'
на:
PHP
1
array('&amp;','&lt;','&gt;','&#039 ;(пробел убрать)','&quot;','_','`','$','%','\','/*','*/','//','&dash;&dash;');
инъекции частично тушатся ими же + (int) для цифр, но ещё обязательно отдельно сначала компилировать сам запрос, а только потом в него подставлять переменные, как тут: http://php.net/manual/ru/function.pg-query-params.php

а хеширование вообще выкиньте
1
29.12.2017, 04:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2017, 04:25
Привет! Вот еще темы с решениями:

Что лучше: РНР или Питон?
Вроде бы, РНР является более современным, удобным языком и способен сделать все...

Создание платного доступа на сайте язык РНР
Подскажите, как можно организовать платный доступ на сайте по дате. Принцип...

Безопасность БД
Мне нужно реализовать максимальную безопасность информации в Базе Данных и...

Безопасность
Какие возможны причины, при которых не работает программа. При прописывании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru