347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
|
|
1 | |
Безопасная регистрация04.03.2016, 10:26. Показов 1023. Ответов 15
Метки нет (Все метки)
Всем привет.
Вот я собственно попытался сделать систему регистрации, в PHP пока еще не особо силен, только понемногу начинаю учится. Хотелось бы попросить знающих программистов оценить код на безопасность (взломают ли меня за 5 минут или нет), поглядеть что да как, дать какую нибудь оценку моему труду (все таки получить от специалиста толковую оценку своей работы это важно). Дать какие нибудь подсказки, что правильно что не правильно у меня и тд... В коде старался работать с классами так как это сейчас модно, стильно, молодежно и тд
0
|
04.03.2016, 10:26 | |
Ответы с готовыми решениями:
15
Безопасная авторизация Безопасная загрузка изображений безопасная передача переменных Безопасная загрузка фото |
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
|
||||||
04.03.2016, 12:42 | 2 | |||||
Бегло посмотрел код. Фильтрацию (проверку) входных данных не обнаружил.
Код взял из разных файлов. Думаю, вы сами найдёте что и где. Например...
1
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
04.03.2016, 12:57 | 3 |
arcmag, а я бы на вашем месте больше беспокоился о архитектуре движка. Хоть и чистенько, но все вперемешку.
Имена типа my-class и my-function совершенно не дают инфы о своем содержимом. С кодировками тоже косяк. Честно говоря к каждой строчке можно придраться... Еще более модно будет использовать mvc. А вообще тему ООП вам тоже стоит перечитать, классы это не просто набор статичных функций.
1
|
Hello Kitty
|
||||||||||||||||
04.03.2016, 12:58 | 4 | |||||||||||||||
тоже бегло посмотрел код.
не заметил этого. защита в виде подготовленного выражения пдо хорошая. могу ошибаться… вот
например
1
|
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
|
||||||
04.03.2016, 13:18 [ТС] | 5 | |||||
Ну я читал что вроде бы если подготавливать запрос к БД в таком стиле
0
|
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
|
|
04.03.2016, 13:21 | 6 |
Вы понимаете смысл процитированных вами участков кода? На каких этапах производится проверка и что она делает?
Ну и по определению, принятые данные должны быть сразу проверены (отфильтрованы). На стороне сервера. Сразу. Функциями, регулярными выражениями...чем угодно...главное отфильтрованы. Так надо организовать логику системы. А не откладывать эту задачу. Вот сначала если есть логин и email тогда создам из них массив, а потом....и там где то... А там где то уже взломают.
1
|
Hello Kitty
|
|
04.03.2016, 13:23 | 7 |
как взломают?
а вы? возможно вы видите как в обход проверок данные подаются на создание юзера? я не заметил этого.
а это что?
1
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||||||
04.03.2016, 13:24 | 8 | |||||
Например класс регистрация. Прям в коде прокомментирую.
1
|
347 / 322 / 203
Регистрация: 27.06.2014
Сообщений: 762
|
|
04.03.2016, 13:26 [ТС] | 9 |
tarasalk,
Вот тут соглашусь... прямо не знаю что делать. Раньше я на php почти не кодил а тут решил и возникла такая беда с этими кодировками, файл через файл выдавалась сплошная абракадабра! Хотя сейчас вроде бы все работает как надо... - а это где можно почитать про такое (ну только чтоб более менее понятно было начинающему)?
0
|
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
|
|
04.03.2016, 13:38 | 10 |
А кто говорил о создании? Не я. Вы смотрите не там. Смотрите авторизацию.
Вот. Посмотрите там где надо. Фильтрация входных данных пользователя может осуществляться на стороне клиента или сервера. Для "веб" решений. Клиент - это браузер. Язык javascript. Сервер - это веб-сервер. Язык - php. Стиль подготовки запроса не подразумевает защиту вашей системы от взлома. Не вижу никакой безопасности в приведенном выше коде. Добавлено через 4 минуты Кодировки это - одна кодировка (пусть utf-8) для всего нижеперечисленного 1) Базы (при создании) 2) Подключения к базе 3) Файлов-скриптов как текстовых файлов (utf-8 ,без bom) 4) Метатег в выходном html файле. 5) Указание кодировки в .htaccess Вроде всё...
1
|
Hello Kitty
|
||||||
04.03.2016, 13:51 | 11 | |||||
хм. вроде бы все правильно же.
минус канешно что нет проверки на размер и могут гоняться большие email на sql сервер. может быть переполнение запроса... опасности для взлома я тут не вижу. просто не эфективно
это не очень правильно. так проще и быстрее. задача же только в регистрации. думаю что все замечания справедливы( особенно про Exception ), однако безопсность( возможность sql инекции, занесение неправельных данных в базу, получение доступа без пароля - я не заметил, хотя пароль можно было бы и захешировать ) вроде бы не нарушена.
1
|
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
|
|||||||||||
04.03.2016, 14:05 | 12 | ||||||||||
Ладно, уточню. С комментариями
0
|
Hello Kitty
|
|
04.03.2016, 14:10 | 13 |
хоть бинарные данные и \x00 - какая разница?
prepare - должен экранировать все. раз все экранированно то запись вида email = :email понимается на Sql сервере как IsEqual( `email` , '..data..' ) и не как иначе. => может быть только переполнение запроса и возможные изза этого исключения. поправте меня если я где то ошибся
0
|
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
|
|
04.03.2016, 14:26 | 14 |
Всё вами вышенаписанное верно. И вроде нет угрозы, но...
Я бы всё равно советовал фильтровать данные после их получения и не надеяться на prepare. Автор этого не делает и пропускает неотфильтрованные данные до самого запроса. Это плохая привычка. Обратите внимание (цитаты), "Вызов PDO::prepare() .... а также помогает избежать SQL инъекций, так как нет необходимости экранировать передаваемые параметры." Здорово. Но: "Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск." Если вас устраивает такой подход к безопасности, то да - угрозы нет. Но я останусь при совоем мнении - так делать нельзя. И если автора захотят взломать, то это сыграет взломщикам на руку. Но скорее всего, автор как Неуловимый Джо...
0
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||||||
04.03.2016, 14:51 | 15 | |||||
Например внедрить внешние зависимости через конструктор. Тык
Кстати еще заметил проблему в тех же строчках:
0
|
Hello Kitty
|
|
04.03.2016, 14:57 | 16 |
ну с дб да, можно было бы и передавать, впрочем из-за примитивности задачи и ускорения разработки можно и так как сделал arcmag, ну а DefaultInfo - будем считать конфиг простанство для переменных.
0
|
04.03.2016, 14:57 | |
04.03.2016, 14:57 | |
Помогаю со студенческими работами здесь
16
Безопасная форма авторизации Безопасная загрузка аватаров на сервер Безопасная загрузка с нужным форматом Безопасная передача данных в БД MySQL ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|