Безопасность стала главной заботой в Интернете в последние несколько лет.Хакеры всегда были вокруг, но с ростом компьютерной грамотности и легкости доступа к практически любым данным, проблема возросло в геометрической прогрессии.Теперь редкий для нового веб-сайта для not получить комментарий спамом в течение days его выпуска, даже если она не продвигается на all.
Это увеличение непослушным поведением, однако, подтолкнул разработчиков писать лучший код, и рамки поставщики реализовали много функций, чтобы помочь кодеров в их борьбе против темных side.
Поскольку проверка данных и санитарную обработку большая часть как гарантии безопасности и нормального пользовательского ввода обработки, закрепляя наш код, мы будем не только защитить наши зады, но предлагая лучшее, более твердые пользователь experience.
В то время как большая часть этой статьи является специфическим для WordPress, значительный кусок составляет около общей практики, что любой может использовать.Даже WordPress-ориентированных разделов содержат полезные логики, поэтому чтение их может быть, стоит, даже если вы используете другой framework.
URL на основе Exploits
С URL на основе подвигов, хакеры пытаются найти слабые места на своем сайте, сделав запросы, которые обычно возвращают ошибку, но почему-то completed.
http://mysite.com/trying/to/exploit/%2F/config
Выше гипотетическая URL, по существу удар в темноте хакером.Но если запрос выполняется, даже если URL явно не хотел идти куда угодно, хакер может воспользоваться it.
Использование Htaccess как Firewall
Один из лучших способов я нашел от такого рода угрозы . Htaccess брандмауэра.Она в основном состоит из правил, которые автоматически блокируют запросы, основанные на строки в URL.
Например, нет никаких оснований для открывающая скобка ([
), чтобы быть в URL-адресе.Если запрос выполняется с использованием URL, который содержит кронштейн, то либо пользователь опечатки или кто-то ищет брешь в системе безопасности.В любом случае, создавая “403 Forbidden” страницы надлежащей практики в этой case.
RedirectMatch 403 \[
Вставить строку выше в вашей . Htaccess файл, чтобы заблокировать любой запрос, который содержит открытии bracket.
Чтобы предотвратить большее, чем просто скобки, то вам нужно более сложный набор правил.К счастью, наш удивительный редактор Jeff Starr пошла изо всех сил, чтобы создать большую . Htaccess правил.Последняя итерация называется 5G Firewall и находится в свободном доступе скоропортящихся Пресс для копирования и вставки pleasure.
Брандмауэра является модульной, так что Вы можете удалять строки из нее, не нарушая функциональность.Есличто-то идет не так, когда вы используете его, вы можете обычно отследить проблему путем удаления линии пока она не начнет работать снова.Как только вы нашли нарушителя строки, вы можете удалить его и вставьте обратно rest.
Защита Directories
На многих серверах, можно просмотреть содержимое каталога, просто введя его в URL bar.
http://myblog.com/wp-content/uploads/2011/08/
Посещение этого типичного URL для блогов WordPress будет просмотреть содержимое этой директории, показывая все добавления с августа 2011 года.Вы могли бы хотеть этого, но вы также можете отключить или тонкой настройки, используя старые добрые . Htaccess file.
Options -Indexes
Popping выше линии в вашем htaccess файл будет отключить каталогов;. Таким образом, пользователи получат “403 Forbidden” сообщение, если они попытке просмотра каталога.Хотя многие люди, кажется, знают об этом, гораздо меньше известно о других вариантов, кроме разрешения или запрещения доступа.Вы можете контролировать, какие типы файлов перечислены использовании IndexIgnore
директиву.Возьмите эти три примера:
IndexIgnore * IndexIgnore *.php indexIgnore *.jpg *.gif *.png
Если каталога включена, то каталог будет отображаться в первом примере, но файлы не будут перечислены, потому что все будут игнорироваться.Второй пример выведет список всех файлов, кроме тех, с . Php расширения.В третьем примере будем опускать трех типов изображений specified.
Заметим, что некоторые хозяева (например, MediaTemple) отключить просмотр каталогов по умолчанию, поэтому вам не нужно будет изменять . Htaccess файл.Чтобы убедиться в этом, просто введите каталог, в адресной строке и посмотреть, что happens.
Дополнительные уровня сервера Protection
Пока меры, которые мы приняли не имеют ничего общего с реальным кодом нашего веб-сайта.Однако обезопасить ваш код, вам все равно необходимо реализовать что-то вроде того, что мы делали выше.У нас нет времени, чтобы смотреть на все советы и рекомендации для htaccess, но вы можете сделать довольно много других вещей.
- Защита паролем директорий,
- Использование смарт-редиректы,
- Запрет доступа на основе IP или IP-диапазон,
- Силы скачивания файлов,
- Отключить хотлинкинга,
- Список можно продолжать on.
Посмотрите на «Дополнительные материалы» раздел в конце этой статьи, и стать хорошими друзьями с вашим . Htaccess файл.Это может показаться сложной и запутанной на первый, но твердое знание о том, как использовать это будет иметь большое значение way.
Защита от вредоносных Users
Второй тип проблемы, которые могут возникнуть, когда кто-то выполняет действие, что они не должны делать.Это не обязательно означает, что они намеревались нанести вред сайту, но это может happen.
Если пользователи перечислены где-то в админ части вашего сайта, есть вероятность, что отображается ссылка для удаления каждого пользователя.Ссылка может указывать на сценарий в следующих местах:
http://mysite.com/admin/scripts/delete_user.php?user_id=5
Эта связь является сравнительно малоизвестной, то есть, обычный пользователь не имеет хороший шанс наткнуться на нее.Но если каталогов включена,Затем кто-то непослушный могли пойти в http://mysite.com/admin/scripts/
, видим, что у вас есть delete_user.php файл там, и делать различные запросы, чтобы попытаться удалить user.
Если скрипт не проверяет разрешения или намерения, то любой, кто посещает по ссылке выше может удалять пользовательские 5.
Органом и Intent
Всякий раз, когда пользователь инициирует какое-либо действие, мы должны сделать две вещи во внимание.Имеет ли пользователь имеет полномочия для выполнения действия (то есть у них есть разрешение)?Если пользователь не имеет полномочий, они также намерены завершить действие (т.е. они имеют в виду, чтобы делать то, что они делают)
WordPress имеет функции, чтобы помочь вам убедиться, что оба условия выполнены, прежде чем действие в сценарии тревоги.Мы будем смотреть на это подробно в ближайшее время.Если вы строите свой сайт с нуля, то вам необходимо убедиться, что каждый пользователь связан разрешения и что вы знаете, какие действия могут быть выполнены в соответствии с которым condition.
Например, вы, наверное, хотели только администраторам, чтобы иметь возможность удалять контент с сайта.Каждый раз, когда пользователь пытается удалить контент, вы должны убедиться, что они на самом деле администратор — это “авторитет” part.
Намерениях лучше всего описать на примере.Предположим, что вы можете использовать следующую ссылку, чтобы удалить комментарий:
http://mysite.com/admin/scripts/delete_comment.php?comment_id=5
Сам скрипт будет проверять, что пользователь в настоящее время войти в систему и является администратором, поэтому он заботится о власти чек.Может кто-то еще сеять хаос?Конечно, они могли!Подлый хакер может поставить ссылку на свой сайт, указывающие на то же место:
<a href="http://mysite.com/admin/scripts/delete_comment.php?comment_id=5">Super-Happy Times Here!</a>
Потому что все любят супер-счастливое время, многие пользователи хотели нажмите на ссылку.В 99% случаев, ничего не случится, потому что эти посетители не будет администраторы mysite.com
.Но если вошедшего в администратора mysite.com
сделал нажмите на ссылку, то действие будет выполняться, даже если ссылка была нажата на самом деле от vilehackerperson.com
.
Вы можете подумать, что шансы на это случится, астрономические.В некотором смысле вы были бы правы, но помните, что хакер может сделать это очень легко и можно автоматизировать.Миллионы людей получают спам-сообщение о том, что Билл Гейтс заберет Интернете, если они платят $ 1000.Большинство получателей не видят электронной почте или выбросить его или пометить как спам или что там у вас, но, возможно, 1 из каждых 2 миллионов человек заманили дюйма тысяч долларов за ничего не делают в основном не плохо на всех.И хакер, вероятно, не поставить ссылку на свой сайт, и все они должны были бы сделать, это взломать большой сайт и вставлять ссылки там никто не noticing.
Проверка за власть в WordPress
WordPress имеет разрешение системы, построенной в именуемого “ Роли и Permissions“. Возможности являются основой всей системы; роли просто способ группировки набор возможностей together.
Если пользователь имеет delete_posts
возможностей, то они имеют право удалять сообщения.Если пользователь имеет edit_posts
возможностей, то они могут редактировать свои сообщения.Немало возможности доступны, и вы даже можете создать свой own.
Роли в основном группами возможностями.Пользователь с ролью «Эксперт» имеет три возможности: read
delete_posts
и edit_posts
.Они дают пользователю права на чтение сообщения и редактировать или удалять свои собственные сообщения.Эти возможности могут быть предоставлены индивидуально для любых пользователей, но группируя их в часто используемых пучков гораздо проще и practical.
Имея это в виду, давайте посмотрим, как использовать WordPress функций, чтобы пользователь имеет полномочия для завершения действия, которые они initiate.
if(current_user_can("delete_users")) { wp_delete_user(5); } else { die("You naughty, naughty person. Of course, you could just be logged out…"); }
Здесь мы убедились, что пользователь имеет delete_users
возможности, прежде чем они смогли завершить действие.Не делать преждевременных предположений при защите ваших скриптов, во многих случаях, особенно те полномочия, целью является не malicious.
current_user_can()
функция принимает один аргумент, который может быть ролью или разрешения.Мы могли позволить “редакторы” (которые обычно не имеют delete_users
возможности) удалять пользователей следующим образом:
if(current_user_can("editor")) { wp_delete_user(5); } else { die("You must be an editor to delete a user"); }
Будьте осторожны с описанным выше способом, потому что роли не включено.Эта функция не требует, чтобы пользователь на least редактор, он требует, чтобы они были exactly редакторе (если это имеет смысл).Из-за этого, я считаю, это предпочтительнее использовать возможности, особенно если я изменил разрешения по умолчанию extensively.
Две другие подобные функции позволяют изучить возможности пользователям, не вошедшего в one.
if(user_can(5, "manage_links")) { echo "User 5 is allowed to manage links"; } else { echo "Sadness! User 5 may not manage links"; } if(author_can(1879, "update_themes")) { echo "The author of post #1879 is allowed to update themes"; } else { echo "Oh noes, our friend, the author of post #1879 may not update themes"; }
user_can()
функция проверяет, является ли данный пользователь имеет данная возможность (или роль).Первым аргументом является идентификатор пользователя или пользователя объекта; второй аргумент это имя возможностей или роли, которые мы хотим проверить for.
author_can()
Функция проверяет, является ли автором данного поста есть данная способность (или …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров