Архив Категории: Программирование

Интернет Программирование

OAuth авторизация через Вконтакте пренебрегла CSRF защитой

Сервис авторизации VKontakte.ru OAuth перестал обрабатывать токен безопасности — параметр state. Эта проблема была замечена мной на этой неделе. У меня на сайте Orgeo.ru повалились ошибки проверки CSRF ключа безопасности, который должен передаваться и возвращаться в параметре state. Если ключ тот же, значит сессия корректная. Проверка достаточно простая и предотвращает CSRF-атаки (Сross Site Request Forgery). Facebook рекомендует использовать параметр state и уж тем более его не отключал.

В официальной документации VK.com метода авторизации посредством OAuth теперь параметра state вообще не указано. Хотя раньше он точно был. Сервис авторизации ВКонтакте просто возвращал его назад в нетронутом виде, как и требует того стандарт OAuth 2.0.

Причины упразднения данной фичи администрацией ВКонтакте не ясны. Безопасность лишней не бывает. Так что авторизация через Вконтакте стала чуточку опаснее для пользователей этой социальной сети. Если конечно админы сайта с такой авторизацией не исхитрятся и не зашьют хэш CSRF-защиты, например, в параметр redirect_uri. В общем, заботящимся о безопасности пользователей администраторов, теперь придется немного исхитриться, чтобы реализовать стандартную защиту, которую Контакт почему-то убрал.

И зачем же было рушить уже работавшую стандартную схему???

 

Жизнь Программирование

Читаем QR код самостоятельно

Если под рукой нет смартфона, но очень хочется прочитать QR-код — нет проблем! QR код можно прочитать и самому, без любых электронных устройств. Готовьте листочек и карандаш для вычислений — вот статья на Хабре «Читаем QR код», которая полностью пошагово описывает процесс декодирования, используя лишь человеческий интеллект.

Данная задача не каждому под силу. Скорее — это просто красивая и качественная статья, более или менее просто объясняющая принципы кодирования данных в QR. Посмотрите, с чем примерно придется столкнуться:

Интернет Программирование

Говнокод социализирует

Если вы любите посмаковать ошибки или, что бывает чаще, наитупейшую захламленность кода программ — то вам понравится проект «Говнокод.ру» под девизом «По колено в коде».

Даже не пытайтесь ничего там понять, если вы не программируете сами. Там представлены различные языки — от PHP, C++ и Java до менее распространенных. И на этих самых языках там пишут посты, обычно не содержащие ни единого сопроводительного слова на русском. А самым частым комментарием является вопрос типа «И что здесь не так? Вроде всё OK!».

Такой вот юмор для избранных! Чтобы понять, нужно сначала поднапрячь мозг. Лично мне нравится! Кроме того, неплохое пособие для самообучения: выбирайте нужный язык программирования и учитесь на ошибках других. Проекту нужно стремиться, чтобы предлагался и публиковался оптимальный код — некий итог дискуссии. Тогда он будет вдвойне полезным.

Программирование

Что заставило меня вернуться к PHP?

Идея.

Всё началось с идеи создания простенького механизма подачи предварительных заявок на участие в соревнованиях. Это было начало 2011-го. В марте система онлайн заявок стартовала в локализованном варианте, но затем переросла в общероссийский проект Orgeo.ru.

Технологии.

После небольшого анализа того, как в современном мире ведутся разработки Веб-приложений, я понял, что к моим старым инструментам уровня банальной подсветки синтаксиса PHP и CSS, возвращаться категорически воспрещено. Единственно верным решением было знакомство с новыми, state-of-the-art инструментами. В итоге я нашел сочетание инструментария разработчика, которое создало наиболее рациональный подход к программированию, и, тем самым дало мне большой стимул к работе над достаточно сложной системой, на которую раньше я бы даже и не замахнулся.

Вот список инструментария:

  1. Netbeans IDE — универсальное орудие разработки, поддерживающее множество языков программирования. Изначально созданный для Java и поэтому хорошо мне знакомый, в последнее время его адаптировали и под PHP, причем не только подсветку синтаксиса. В Netbeans есть: навигация по классам и встроенным функциям PHP, интерактивная документация, рефрактор кода, анализ ошибок кода, предупреждения, отладка. Есть также и отличная поддержка синтаксиса CSS и HTML. В итоге, разработка на под Веб стала на много удобнее, комплекснее и интеллектуальнее, особенно в сравнении с 2007-м :)
  2. MySQL Workbench — визуальная среда проектирования, разработки и администрирования баз данных MySQL. Раньше были некие зачатки, но такого качественного и целостного инструмента не было. Стало комфортнее проектировать и модернизировать базу, получая готовый SQL код простым нажатием кнопок в удобном современном интерфейсе. Проектировать базу можно сразу в двух режимах — путем создания таблиц и связей в визуальном редакторе, либо в режиме ERR модели. При втором варианте строится диаграмма таблиц и реляционных связей, в которой непосредственно можно выполнять все нужные операции над таблицами, полями и связями.
  3. Yii Framework (русскоязычное сообщество Yii) — это самый современный PHP-фреймворк, начавший свое развитие только в 2008-м году. В его основу были заложены только самые современные подходы и в силу этого, сегодня этот фреймворк приобрел огромную популярность. Он заключает в себе все преимущества объектно-ориентированного подхода PHP 5.3, в то же время делая разработку весьма простой и прозрачной. Также очень важно, что в его состав входит множество полезнейших утилит, в том числе и для высоко нагруженных проектов. Разработчику не приходится постоянно изобретать велосипеды, так как уже всё есть и легко настраивается.
    Данный фреймворк ни чем не напоминает обычную CMS, а является именно инструментом разработки сложных Веб-приложений. В частности, в нем достаточно легко создавать интерактивные формы, в том числе и с использованием встроенных технологий Ajax и JQuery.

Опыт.

Время, проведенное в “интернет-изоляции” прошло тоже не даром, было получено много опыта в сфере корпоративных ERP. И появилось огромное желание, применить этот опыт для создания общественно полезного проекта.

Дизайн Интернет Программирование

TimeLine 2004 — 2007

По истечении почти пяти лет молчания, хотелось бы вспомнить всё!

Так получилось, что моя активность в Интернете, да и моего друга Wielhorsky, сошла практически на нет в 2007-ом. Хотелось бы подвести итог этих лет жизни, творчества и разработок хронологически выстроенным описанием наших проектов. Естественно, сие описание построено весьма красиво, на чистом CSS, так сказать, в стиле тех лет.

Интернет Программирование

Gelato is a tumblelog CMS

gelato is a tumblelog CMS built on AJAX, PHP and MySQL.

Интернет Программирование

Vblog engine

Мы решили опубликовать наш движок, на котором работал старый сайт RATBAG. Он конечно работает, но в нем много недоработок. К тому же мы перестали его развивать, так как делать это своими силами нецелесообразно.

Идея движка не нова. Vblog — это Движок блога, написанный на PHP (4.x и выше), в котором есть большинство из представленных в современных блогах функций, хотя некоторые из них и недоработаны. Есть одна особенность, которая выделяет его из ряда других — все данные хранятся в текстовых файлах, без использования баз данных. Я пытался развить эту идею еще сильнее, создав хранилище данных на основе xml-документов, но закончить это мне не удалось.

Документации нет и не планируется, есть лишь описание структуры и основных функций, а также инструкция по установке. Все это входит в состав дистрибутива, который распространяется по open source лицензии GNU GPL.

Загрузить Vblog engine (.zip, 270KB)

Мы будем рады если наш двигатель Vblog или отдельные части его кода будут вам полезены. Если вы будете заинтересованны в развитии этого проекта или у вас возникнут какие-либо вопросы, мы с радостью ответим на ваши вопросы по email, указанным в readme.html дистрибутива. Вы также можете задавать вопросы в комментариях к этому посту.