Защита от CSRF в Django на простом примере

31 августа 2016 г. 19:35 django  


В статье рассмотрен один из распространненых видов атак называемый Cross-site request forgery (CSRF). На простом примере будет показано как заставить пользователя выполнить действия на чужом незащищенном сайте при помощи своего сайта а также как защитить сайт от такой аттаки в Django Framework.

Заметки по созданию приложений Android

14 августа 2016 г. 21:16 Android   Java  

 В статье собраны несколько заметок и шаблонов кода для разработки приложений на Android с использованием Android SDK.

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

Осторожно, статья содержит много англоязычного сленга, например Интент (Intent), Вью (View), Лейяут (Layout), Евент (Event), etc. Так удобней писать и надеюсь что читателю будет удобней привыкать к правильным понятиям читая документацию в оригинале.

Сессии в Django

29 июля 2016 г. 22:14 django  

Djnago предоставляет возможность хранить и получать данные для каждого пользователя сайта c помощтю сессий. Сессия - это словарь с парами ключ/значение который ассоциирован с каждым сеансом работы с сайтом, обычно от первого визита сайта в браузере и до тех пор пока не истечет срок годности куки в браузере либо до тех пор пока юзер вручную их не очистит. Куки - это данные, которые сервер отправляет на хранение в браузер а потом получает назад с каждым запросом от браузера. В них хранится только id сессии (маленькая строка), а сами данные сессии хранятся на сервере. Это детальнее и будет рассмотрено в статье.

 

Передача пакетов через поток TCP

21 июня 2016 г. 21:08 python  

Сокеты Беркли придоставляеют возможность передавать датаграмы без гарантии доставки (UDP) либо поток байт с гарантией (TCP). Смысл потока в отличии от датаграм состоит в том что при передачи определенного колличества байт на передающей стороне функцией send нет гарантии что вы получите ровно столько же за один вызов recv на принимающей стороне. Например вы можете передать один раз 1000 байт а получить сначала 400 а потом 600 байт. Аналогично в потоке возможен и обратный процесс - склейки - вы можете 3жды отправить по 200 байт а получите сразу 600. Причиной такого поведения есть алгоритм Нейгла позволяющий за счет накапливания байт и последующей отправке значительно повысить эффективность передачи данных. Но что если передавать нужно именно пакеты целиком, то есть датаграмы целиком. Один из вариантов - использовать подход TLV (Tag-length-value), пример на Python приведен в статье.

Сеть между двумя инстансами/интерфейсами OpenVPN

20 июня 2016 г. 21:57 Linux   OpenVPN  

Иногда бывает что на сервере приходится запускать по несколько инстансов openvpn-сервера. Бывает это чаще всего из-за того что один инстанс не умеет биндиться сразу на разных портах либо сразу на разных протоколах (TCP и UDP), поэтому приходится копировать конфиг и заменять в нем параметры port nnn или proto yyy, ну и подсети server x.x.x.x (Подразумивается что мы используем topology subnet, остальные параметры как правило не конфликтуют но бывают исключения). Новый конфиг приводит к созданию нового инстанса и нового интерфейса. Но что если вам нужно что бы узлы сетей OpenVPN могли работать друг с другом.

Advanced Python

28 мая 2016 г. 10:48 python  

Этот туториал не для тех кто не написал ни строки на пайтоне, скорее он для тех кто хочет понять как он работает чтобы повысить свою эффективность и с легкосьтью решать сложные ситуации. Все что сказано будет подкреплятся простыми примерчиками.

Все что будет рассматриваться в статье проверялось и относится к python3 и python3.4 в частности. Тут не указаны отличия от этого всего в python2 чтобы не тратить ни чье время, но пару таких отличий все же есть.

Building Yocto linux for Intel Edison with 3G USB modems support

26 мая 2016 г. 20:55 Linux   Intel Edison  

Today we are going to build custom Yocto Linux image for embedded IoT computer called Intel Edison. My main aim why I need to build image was enabling mobile internet USB dongles support, but this guide can be also used if you want to do any other image tuning. To achieve USB modems support we need:

1. Include USB to Serial drivers for modem (to have /tty/USBx ports which will allow communicating with GSM/CDMA module inside of our USB Dongle)

2. Most of the dongles plugged in the system as USB storage Device. But to enable internet connection we need to switch dongle in USB Modem mode. This will lead to changing USB Vendor ID and appearing /tty/USBx ports (of course only if USB serial drivers will be installed). To implement switching, we need to include usb_modeswitch package in our Linux.

3. We need to enable PPP kernel drivers for creating PPP data connection to our mobile provider. 

4. We will also install pppd which will make a call to the mobile operator, create connection and create network interface (e.g. ppp0) which will connect our device to big world of the internet!

Часовые пояса в Django на простых примерах

8 апреля 2016 г. 10:57 django  

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

Поведение BRAM FIFO при переполнении

10 марта 2016 г. 11:10 ПЛИС  

Небольшая заметка с результатами симулации переполнения простой однотактовой FIFO с счетчиком объема data_count в симуляторе Xilinx ISIM.

 

Собираем Yocto Linux для Intel Edison

6 марта 2016 г. 17:44 Linux   Intel Edison  

Yocto Project - это Open Source инфраструктура которая позволяет самостоятельно собрать дистрибутив Linux с нужными функциям для встраиваемых систем на архитектурах ARM, PowerPC, MIPS, x86 и x86-64. Название Yocto происходит от приставки дольних единиц измерения в СИ, эквивалентную 10-24. Для использования Yocto на встраиваемой системе необходимо включить в дистрибутив так называемый BSP (Board Support Package), который будет состоять из драйверов и пакетов обеспечивающих работу аппаратного обеспечения. В частности на основе Yocto создаются дистрибутивы для Intel Edison с названием Yocto* complete image, которые предлагается скачать на стринице загрузки https://software.intel.com/en-us/iot/hardware/edison/downloads. Самостаятельная сборка дистрибутива дает намного больше возможностей в разработке - вы можете включать дополнительные бинарные пакеты в систему, конфигурировать ядро Linux (в частности добавлять в ядро модули для поддержки новых устройств), добавлять патчи с исправлениями которые выходят еще до выпуска дистрибутива, имеете возможность создавать бинарные пакеты ipk для менеджера opkg, используемого в Yocto, запускать дистримутив в эмуляторе QEMU. В статье мы собрем дистрибутив и слегка модефицируем его для своих нужд.