Как создавать крутые веб-приложения с защитой данных?
В общем, задал себе задачку при выборе дипломной - создать веб-приложение "Календарь-туду лист" с защитой пользовательских данных, но наткнулся на проблему, что я не могу даже приблизительное ТЗ самому себе составить. Знаю PHP на уровне "С + HTML = магия", JS на уровне jQuery, AJAX на уровне "пацанам в падике залечить, типа умный". Работал Битрикс-проггером, сами понимаете...
Нет, все это конечно преуменьшение, в целом я понимаю, что и куда нужно прикрутить, чтобы получился знатный профит, но во многих случаях не понимаю, как это прикручивать. Ну и вот сам вопрос, точнее вопросы:
1. Если кто-нибудь сталкивался с защитой инфы в веб-приложениях, поделитесь ссылочками - как шифрация-дешифрация данных реализуется на стороне сервера и клиента, если клиент использует браузер.
2. Какую базу данных юзать? Вопрос глупый, но работал я только с инфоблоками битрикс, да MySQL изучал немножечко. Может настало время изучить что-то новое?
3. Собственно, само веб-приложение. Как оно строится, с чего начинать, чем заканчивать? Может был опыт у кого, может им кто-то уже делился на хабре.
Гуглом я пользоваться умею, но боюсь, что наткнусь на некачественные, устаревшие или сильно замудренные статейки, и только усугублю ситуацию. Заранее благодарю.
1. Любые библиотеки, реализующие уже составленные стандарты шифрования.
На вопрос "почему не написать свой алгоритм?" за ответом направляю суда.
Стоит помнить, что ключ должны знать и клиент и сервер. По этому поводу следует проследовать вот суда.
2. Если решились использовать именно PHP, то уверенно советую запускать БД в виде сервера (пусть даже локального). Для небольшого проекта подойдёт абсолютно любая, пусть даже NoSQL БД.
George The Hipster: я бы писал на ноде, но это сугубо мой выбор. Однако все-же рекомендую выбрать платформу, не запускающую отдельный процесс для каждого запроса.
Чуть больше кода в пользу памяти и скорости - хороший case.
Из лично мной виденных крутых штук, позволяющих такое, кроме node, вспоминается только Golang. Так, что если ещё не имеете навыков написания подобных приложений - лучше начать с более перспективной технологии.
1. Если кто-нибудь сталкивался с защитой инфы в веб-приложениях, поделитесь ссылочками - как шифрация-дешифрация данных реализуется на стороне сервера и клиента, если клиент использует браузер.
2. Какую базу данных юзать? Вопрос глупый, но работал я только с инфоблоками битрикс, да MySQL изучал немножечко. Может настало время изучить что-то новое?
1. Сам ищу решение.
2. Я свое приложение писал на PHP и MySQL. Можно и другим способом (JAVA, ASP и т.д.). Почитайте о json.
3. Суть проста, по пунктам :
Серверная часть. Пишите приложение как обычный сайт. Взаимодействие кода с базой данных и вывод на экран браузера, Затем создаете API. те же страницы только вывод уже не в обычном формате а в формате json.
Клиент. Написан на JS (можно и PHP) подключается через AJAX к серверной части, получает и обрабатывает json. После обработки отображает в окне браузера или апликации.
Я разделил на 2 сервера, но можно и на одном.
Это-то все понятно, что и с чем связывать) Я думал, может есть какие-нибудь статейки, чтобы глубже понять тему, да и посмотреть, как это реализуют более компетентные лица.
Прежде чем писать приложения\делать сайт, нужно сначала определиться что именно это за приложение и какие именно данные в нем нужно защищать, затем имея уже подобие контекста можно думать о структуре\архитектуре, выбирать БД и т.п. Для абстрактного коня в вакууме подобные вопросы не имеет смысла. Для каждой задачи свои инструменты и если использовать неправильные на позднем этапе проекта в поймете, что забивать шурупы молотком плохая идея и придется все переделывать. Поэтому сначала определитесь, что именно вы хоте создать.
И по сути вопроса, чем ниже уровень абстракции в разработке и ниже уровень программиста, тем большая вероятность наделать дыр, которые могут использоваться во вред сайту\приложению, поэтому создавать приложение на html\js\php и подобном без опыта это равносильно тому, что вы просто расшарите свои данные в общем доступе.