Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

Безопасная загрузка изображений на сервер. Часть первая

Reading time10 min
Views137K
В данной статье демонстрируются основные уязвимости веб-приложений по загрузке файлов на сервер и способы их избежать. В статье приведены самые азы, в врят-ли она будет интересна профессионалам. Но тем неменее — это должен знать каждый PHP-разработчик.

Различные веб-приложения позволяют пользователям загружать файлы. Форумы позволяют пользователям загружать «аватары». Фотогалереи позволяют загружать фотографии. Социальные сети предоставляют возможности по загрузке изображений, видео, и т.д. Блоги позволяют загружать опять же аватарки и/или изображения.

Часто загрузка файлов без обеспечения надлежащего контроля безопасности приводит к образованию уязвимостей, которые, как показывает практика, стали настоящей проблемой в веб-приложениях на PHP.

Проводимые тесты показали, что многие веб-приложения имеют множество проблем с безопасностью. Эти «дыры» предоставляют злоумышленникам обширные возможности совершать несанкционированные действия, начиная с просмотра любого файла на сервере и закачивания выполнением произвольного кода. Эта статья рассказывает об основных «дырах» безопасности и способах их избежать.
Читать дальше →
Total votes 77: ↑69 and ↓8+61
Comments57

Безопасная загрузка изображений на сервер. Часть вторая

Reading time7 min
Views28K
Это вторая часть перевода. Начинать прочтение лучше с первой.

Итак, после применения описанных в первой части методов, мы можем прекратить волноваться? К сожалению, нет. То, какие расширения файла будут переданы транслятору PHP, будет зависеть от конфигурации сервера. Разработчик часто не знает и не контролирует конфигурацию веб-сервера. Мы видели веб-серверы, с такой конфигурацией, что файлы .html и .js выполнялись как php. Некоторые веб-приложения могут потребовать, чтобы файлы .gif или .jpeg интерпретировались PHP (это часто случается, когда изображения, например графы и диаграммы, динамически строятся на сервере самим PHP).

Даже если мы знаем точно, какие расширения файла интерпретируются PHP, у нас нет никакой гарантии, что это не изменится в будущем, когда другие приложения будут установлены на сервер. К тому времени можно забыть, что безопасность нашего сервера зависит от этих изменений.
Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments31

Дао бизнесмена

Reading time6 min
Views1.6K

ВСЕГО ТРИ СУЩНОСТИ УПРАВЛЯЮТ ЭТИМ МИРОМ


Представьте, что Вы — это я.
Я, который разложил мир на три составляющие.
Человек, который строит бизнес и личность из: (1) концентрации, (2) энергии и (3) свободы.
Всего три сущности управляют нашим бизнесом и нашей личностью.
Постройте треугольник эффективности из этих сил, развивайте его в себе, и в вашей организации. рис. Концентрация, энергия и свобода — организуют треугольник эффективности.

Читать дальше →
Total votes 75: ↑44 and ↓31+13
Comments60

Вертикальный скрол c краткой информацией.

Reading time1 min
Views2.3K
Когда то давно, не помню где я читал о том, что обычный скрол можно сделать более функциональным и предлагалось ряд решений.
Мне эти идеи понравились и вот спустя много лет :)…
Предлагаю свою реализацию на javascripte. Идея в том чтобы на фоне скрола показывать эскиз всего текста, а с помощью движка скрола видимую часть текста. При таком подходе сразу видно где находится картинка, заголовок, а где параграф.
Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments85

Постраничная навигация с MySQL при большом количестве записей

Reading time7 min
Views41K
Рано или поздно многие крупные проекты сталкиваются с проблемами производительности при постраничной навигации по записям. Некоторые из них решают эту проблему ограничением количества доступных для просмотра записей (скажем, не больше 1000). Вполне приемлемое решение. Но в этом случаем могут возникнуть проблемы с индексированием сайта сторонними поисковиками, которые и представляют наибольшую угрозу. В этой статье я хотел бы отказаться от привычной для всех панели навигации вида «1..2..3..4..» в пользу простой «вперед… назад» (будет проще объяснить), но это не проблема реализовать подобное и с первым вариантом.
Более точно определить тему, назвав, какое количество записей считать достаточно большим для появления тормозов, не получится, так как эта цифра для всех разная и сильно зависит от того, насколько быстрые у Вас жесткие диски, сколько памяти, и какая часть Ваших данных уже закеширована в ней и тд. Но если Вы и Ваши сервера ощущают, что n-ная страница при выводе даётся тяжелее первой, и при этом не знаете, что с этим делать – статья для Вас. Но для начала, я хотел бы на пальцах объяснить, почему ОНО работает медленно.

Кстати, тест происходит на виртуальной машинке, работаю я с СУБД под рутом, версия MySQL – 5.0.32.
Читать дальше →
Total votes 139: ↑135 and ↓4+131
Comments81

Как я воевал со временем

Reading time3 min
Views3.2K
Справка: Хоторнский эффект

Не так давно у меня возникла необходимость выучить новый для себя язык программирования. Так как это был мой первый опыт самостоятельного обучения, без лекций и лабораторных работ (да, я всего лишь студент), было достаточно интересно и познавательно наблюдать за собственным поведением, процессом обучения и мотивацией к действию. Часто так бывало, садишься за родную машинку, запускаешь IDE, а подлое подсознание шепчет: «Отвлекись ненадолго, посмотри еще одну серию Хауза». Или так: берешь в руки тематическую книгу, а рядом на полке стоит какой-нибудь фантастический роман («Свеженький, последняя тема обсуждений у фэндома»). Предательски дрожит рука и тянется за жвачкой для мозгов.

На протяжении недели наблюдая за собой, я отметил, что причина подобной реакции отнюдь не в отсутствии должной мотивации, а вбитая со школьной скамьи привычка: если никто не наблюдает, то можно позволить себе отдохнуть чуть подольше и отложить дела на потом. Положение было сродни тупиковому: не было никого, кто мог периодически «давать пинка» моей совести.

Что я придумал?


Читать дальше →
Total votes 117: ↑106 and ↓11+95
Comments103

Упрощаем разработку сайта с Site Helper

Reading time2 min
Views1.1K
Site Helper(SH) – тулза для помощи верстальщикам, а также хороший инструмент для общения верстальщик-программер-руководитель, а так же руководитель-клиент «не отходя от сайта» незаметно для обычных пользователей и в реальном режиме времени.

Наверное, каждый, кто хотя бы разверстал пиксель в пиксель под каждый браузер, сталкивался с ситуацией, когда что-то едет, не совпадают высоты ширины блоков… ситуация знакомая.
Тут может спасти PixelPerfect или сетка разметки на js или SH ;)

Ещё очень распространенная ситуация, когда заказчик или тестер нашел баг и не может понятно объяснить, где он находится. Ну, или заказчик решил добавить блок баннеров и также не может внятно объяснить, что и куда.
Читать дальше →
Total votes 69: ↑66 and ↓3+63
Comments45

Построение графики на javascript

Reading time1 min
Views12K
dg
Raphaël — небольшая библиотека(20 килобайт) для построения векторной графики на веб-сайтах.

Она использует SVG и VML в качестве базы для создания графики. Учитывая то, что каждый созданный объект — DOM объект, то при помощи JavaScript обработчиков можно легко изменять их свойства и действия.
Читать дальше
Total votes 107: ↑103 and ↓4+99
Comments58

16 действительно полезных решений для JavaScript

Reading time16 min
Views7.2K
© shamansir.wordpress.com

Представляю вам набор функций, которые у меня лежат в отдельном файле utils.js — это функции, которые я использую чаще всего. Они стараются быть кроссбраузерными и проверены на IE6/7, FF2 и Safari 2 и на боевой, сложной системе, в XHTML документах. Должны, по идее, работать, и на других, но не очень старых версиях браузеров — проверку браузера я использовал только в исключительных случаях. Некоторая часть из них, конечно же, просто нарыта на просторах интернета (где — обычно указано) и заимствована ввиду открытости, а большая часть — сконструирована из многих ресурсов и своих идей (и советов коллег), дабы работать на ура — поскольку часто в разных скриптах не учитываются разные тонкости, которые, тем не менее — при ближайшем рассмотрении — оказываются общностями :), ну и быть довольно читабельными.
Узнать
Total votes 89: ↑79 and ↓10+69
Comments73

Crop & Resize на страницах ваших сайтов

Reading time3 min
Views32K
Пройдясь по хабра-поиску выяснил, что готового решения для кропа-ресайза изображений, на движке JavaScript/HTML/CSS еще не предлагалось. Поэтому, позвольте представить вашему вниманию модуль для ваших сайтов, частично реализуюший функционал редактирования, распространенный на фото-хостингах.

К делу

Внешне задумка выглядит так:


Читать дальше →
Total votes 117: ↑102 and ↓15+87
Comments122

JS-PHP MVC интерфейс — cобираем всё вместе

Reading time5 min
Views7.4K
Для начала я хочу поблагодарить m007, который подал идею, как можно упростить Programmer-friendly интерфейс взаимодействия Клиент(JS)-Сервер(PHP), что и поспособствовало написанию этой статьи.

Данная статья является заключительной, в которой я объединю JS-Шаблоны, PHP Model-controller, и добавлю Динамическое создание UI методов на JS (некоторые идеи которого были взяты из статьи m007). Тем самым мы получим на выходе неплохой и удобный фундамент для создания своих AJAX приложений.
Динамическое создание методов на JavaScript
Total votes 28: ↑24 and ↓4+20
Comments53

Запуск серверных процессов через JavaScript и Jaxer

Reading time1 min
Views821
Jaxer — это первый в мире AJAX сервер. HTML, JavaScript и CSS являются для Jaxer родными, также как и XMLHttpRequest, JSON, DOM и др. Будучи сервером он предоставляет доступ к базам данных, файлам, логгированию, управлению процессами, безопасностью, интеграционными API и многому другому.

И сейчас, Tom Kirkpatrick описал новый раздел API Jaxer, называемый Jaxer.Process, который позволяет вызывать операционную систему хоста.

Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments4

Вращающееся облако тегов на javascripte

Reading time1 min
Views13K
Недавно на хабре был топик, в котром было рассказано об облаке на флеше. Посмотрел, понравилось, решил повторить на javascript-e. Вот что получилось: demo зеркало архив.
Создание облака происходит так:
var cloud = new Cloud(
   {
        radius:200,
      parent:document.body
   });
   cloud.addTag([
      
      {href:"#",w:"2",text:"нло"},
      {href:"#",w:"2",text:"общение"},
      {href:"#",w:"1",text:"по"},
      {href:"#",w:"1",text:"подкаст"}
   ]
   );



Не знаю, пригодится ли, при большом количестве тагов жутко тормозит.
Тестировал в Mozilla 3, IE7.

P.S. Если понравится, можно будет его еще как-то улучшить, но пока смысла не вижу :)

Вот хабра юзер Kron0S сделал плагин для wordpress на основе моего скрипта.

Судя по комментариям сильно тормозит, я провел не большую оптимизацию при тегах в количестве 100 штук на моей машине(ntel Core 2 Duo 2.3 с 2Gb Vista FF3) почти не тормозит жду ваших комментариев. Может кто предложит еще както оптимизировать код ( Фраемворки не предлагать только алгоритмы).
Total votes 136: ↑123 and ↓13+110
Comments139

jQuery plugin positioning

Reading time1 min
Views1.5K
При разработаке одного проекта возникла проблема позиционирования дива посередине страницы независимо от ширины дива и от того, есть ли скролл на странице.
Если страница влезается на экран — можна делать через сss (position:absolute; left i top), но и тут надо учитывать в каждом варианте ширину дива.
Если же на странице появляется скроллинг — тогда есть некоторые проблемы.
Так как последним временем (и в том проекте тоже) пользуюсь Javascript-фреймворком jQuery — решил оформить в виде плагина.
Так появился плагин positioning.

Плагин имеет 2 методы:
positioning(leftOffset, topOffset, scroll) — позиционирует элемент на странице

leftOffset — сдвиг по горизонтале
topOffset — сдвиг по вертикали
scroll — параметр, который задает позиционирование относительно «абсолютной» верхней левой точки браузера, или позицинирование относительно верхней левой точки уже проскролленной страницы.

Вызов centering() — позиционирует элемент точно по центру страницы.

Плагін тестировал в FF 3.0, IE6.0+, Safari 3.1, Opera 9.6
Пример можно посмотреть здесь
yablog.org.ua/jquery/index.html
Внизу страницы есть 3 кнопки — кликая на них можно посмотреть плагин в действии
Total votes 9: ↑7 and ↓2+5
Comments9

Плагинописателям.

Reading time1 min
Views609
Привет.
Заметил я, что на хабре довольно много человек занимается созданием плагинов для различных фреймворков.

Есть у меня идея, почему бы вместе всем не собраться и не сделать сайт, на котором будем выкладывать наши творения или создавать что-то совместно?

Эдакий репозиторий с плагинами.
Лично я пишу для mootols\jquery.
Total votes 131: ↑96 and ↓35+61
Comments51

Юзабилити Бюллетень. Выпуск № 24

Reading time1 min
Views458
Раскрыть аннотации статей
Total votes 21: ↑16 and ↓5+11
Comments2

Веб-формы «Светофор». Вариант реализации

Reading time1 min
Views2.5K
Не так давно Gunger представил вариант раскрашивания элементов ввода текста на форме. Мне этот вариант, несмотря на критику некоторых юзеров, очень понравился и я решил что со временем сделаю свою реализацию.

Время пришло и я рад представить свой вариант реализации написанный в виде JQuery-плагина. Я назвал плагин semaphore, по моему вполне удачное название. Плагин работает с регулярными выражениями для проверки валидности ввода.
Читать дальше →
Total votes 80: ↑70 and ↓10+60
Comments41

Фиксим плагин jGrowl в IE 7

Reading time1 min
Views1.2K
Сегодня с удивлением обнаружил, что популярный в народе jQuery-плагин для показа сообщений jGrowl версии 1.1.1 не работает в IE7. Вернее, сами сообщения отображается, но где-то внизу. В других браузерах подобная проблема не наблюдается.

Честно потратил около часа: игрался с блоками div.ie6 в исходном css-файле (да, если кто не в курсе — для IE там отдельные стили. No comments), изучал сам плагин на предмет глючности.
Потом поизучал эту тему в гугле и обнаружил следующее.

В плагине есть такая строка:
if ($.browser.msie && parseInt($.browser.version) < 7) $(this.element).addClass('ie6');

Перед ней надо вставить следующий хак и всё заработает:
if(jQuery.browser.msie && parseInt(jQuery.browser.version) == 6 && window[«XMLHttpRequest»] ) {
jQuery.browser.version = «7.0»
}


Правда, закругленные углы в IE 7 и Опере 9.5 не показываются, но это уже другая история. Буду рад, если кому-то помог.

Написал разработчику (был, кстати, не первым). Будем надеяться, что в следующей версии пофиксит.
На сайте самого плагина всё работает и без фикса, что удивительно. Версия там тоже 1.1.1, если я не ошибаюсь.
Total votes 15: ↑11 and ↓4+7
Comments5

Старый злой WPA

Reading time1 min
Views4K
Не так давно между делом два исследователя ухитрились взломать часть Wi-Fi Protected Access (WPA) – для тех, кто не знает – это протокол шифрования информации для беспроводных сетей.
За примерно 15 минут Эрик Тьюз и Мартин Бек вскрыли Temporal Key Integrity Protocol и продемонстрировали наглядно перехват информации, передающейся в обе стороны, и ее открытое чтение. Плюс также существует возможность модифицировать заголовки и подделывать получаемые пользователем пакеты.
По сути, технология представляет собой перегрузку канала большими массивами информации, что позволяет применить разработанную парой программистов формулу для взлома ключа защиты.
Читать дальше →
Total votes 29: ↑22 and ↓7+15
Comments35

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity