Рубрика «php» - 244

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

Я пишу защищенный код, если соблюдаю все эти пункты:

  1. Я не буду хранить чувствительные данные в plain text, я буду защищать их как следует.
  2. Я всегда буду защищать пользовательские данные, как защищал бы свои.
  3. Я всегда буду использовать проверенные и известные алгоритмы, не буду изобретать колесо.
  4. Я буду использовать существующие библиотеки, пока возможно, и буду писать свои только когда нет подходящих альтернатив.
  5. Я всегда буду использовать параметризованные запросы (читай бинды) SQL, я не буду доверять экранированию.
  6. Я буду воспринимать уязвимости серьезно, не буду игнорировать их.
  7. Я должен понимать OWASP топ 10 уязвимостей, и всегда буду защищать свои приложения от них.
  8. Я не буду всегда предполагать, что знаю лучше, но буду постоянно развиваться.
  9. Я не буду доверять безопасность системам, которые самостоятельно не исследовал.
  10. Я всегда буду стараться обучать других.

Читать полностью »

Каждый день я вижу потенциально уязвимый код. Иногда настолько, что любой 10-летний может поломать его. Я также много общался с программистами, которым стоило бы больше знать о хороших практиках защиты от уязвимостей. Это очень удручающе. Это грустно, что средний девелопер знает так мало об обычных практиках безопасности. Так что я собрал здесь маленький манифест.

Я пишу защищенный код, если соблюдаю все эти пункты:

  1. Я не буду хранить чувствительные данные в plain text, я буду защищать их как следует.
  2. Я всегда буду защищать пользовательские данные, как защищал бы свои.
  3. Я всегда буду использовать проверенные и известные алгоритмы, не буду изобретать колесо.
  4. Я буду использовать существующие библиотеки, пока возможно, и буду писать свои только когда нет подходящих альтернатив.
  5. Я всегда буду использовать параметризованные запросы (читай бинды) SQL, я не буду доверять экранированию.
  6. Я буду воспринимать уязвимости серьезно, не буду игнорировать их.
  7. Я должен понимать OWASP топ 10 уязвимостей, и всегда буду защищать свои приложения от них.
  8. Я не буду всегда предполагать, что знаю лучше, но буду постоянно развиваться.
  9. Я не буду доверять безопасность системам, которые самостоятельно не исследовал.
  10. Я всегда буду стараться обучать других.

Читать полностью »

Паттерны проектирования приложений все больше входят в нашу жизнь. Сегодня мы рассмотрим один из популярных паттернов — MVC и попробуем понять почему он так популярен.

image
Читать полностью »

Поскольку я не очень опытный разработчик — так вышло, что в веб я пришел недавно — по ходу написания кода мне часто приходится обращаться к официальной документации PHP и MySQL, а также искать во время работы с текстами определенную информацию еще на паре сайтов, не связанных с IT, но связанных с другой моей работой.

Notepad++ и поиск в Интернете

Раньше в случае возникновения вопроса мне нужно было выполнить следующие действия:

  1. Выделить фрагмент текста (или кода);
  2. Скопировать его в буфер обмена;
  3. Перейти в браузер;
  4. Вставить текст из буфера обмена в строку поиска (где предварительно должно уже было быть введено site: адрес сайта или открыт требуемый сайт);
  5. Нажать кнопку искать (ввод)*.

С помощью дополнения NppExec это можно сделать в несколько раз быстрее.Читать полностью »

Я люблю git. Я использую его во всех своих проектах. Поэтому я решил сделать веб-консоль для управления git-ом на PHP.
Управление GIT ом через веб консоль на PHP
Читать полностью »

Несколько недель назад в списке рассылки PHP было интересное предложение с чьим-то хаком, где описаны генераторы, выражения-генераторы и выделения списков. Неудивительно, что некоторые люди не уверены в перспективах этого предложения, как и core разработчики, так и пользователи PHP. Я хотел бы поделиться несколькими идеями и попытаться убедить этих парней.
Читать полностью »

В процессе разработки веб приложений, у нас часто возникает 2 вопроса:
1. Какие задачи уже решены, но ещё не залиты на боевой сервер. Другими словами — что именно зальется на боевой сервер при апдейте git
2. Как быстро посмотреть логи — что и когда заливалось на сервер.

В качестве системы контроля версий используется git (через него и обновляется production сервер). В качестве таск-менеджера Redmine. Читать полностью »

Недавно мне потребовалось сделать небольшой парсер на php для интернет-магазина. Я не стал изобретать велосипед и взял стандартную библиотеку. Но тут наткнулся на неожиданную проблему — библиотека парсит только правильно сверстанные сайты. Мой таким не был. Выходом из этой проблемы оказалось использование ещё более громоздких библиотек в которых сам черт ногу сломит. Я бросил это дело и решил парсить обычными регулярными выражениями. Всё шло хорошо когда парсились простые строки вроде цены и заголовков, но как дело дошло до средних размеров текста в котором встречаются теги br, stong и другие появились сложности. Читать полностью »

в 6:45, , рубрики: best practices, php

Интересные советы по php собранные все в одном месте
Мало кода, много слов, заинтересованных прошу под кат

PHP Best Practices 2012
Читать полностью »

Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:

YaLinqo — Yet Another LINQ to Objects for PHP

Возможности:

  • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
  • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
  • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
  • 100% покрытие юнит-тестами.
  • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
  • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
  • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.

Пример кода:

// Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
// отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.

from($categories)
    ->orderBy('$v["name"]')
    ->groupJoin(
        from($products)
            ->where('$v["quantity"] > 0')
            ->orderByDescending('$v["quantity"]')
            ->thenBy('$v["name"]'),
        '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
    );

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js