Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia

https для некоторых страниц в php.

20.11.2012 18:50 | Просмотров: 4095 | Доход: 178.48 руб. | Комментариев: 2
[Программирование] 
Рейтинг: 5/3

Настроив SSL и немного поэксперементировав с производительностью, я пришел к выводу что защищать нужно только те данные, которые в этом действительно нуждаются. Таким образом задача сводится к тому, чтобы переключать на https те страницы, где отправляются секретные данные и обратно на http на всех остальных страницах. Первое что пришло в голову, это mod_rewrite для .htaccess

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^lab/ssl.php https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTPS} on
RewriteRule !^lab/ssl.php http://%{HTTP_HOST}%{REQUEST_URI}

Впринципе вполне стабильное решение, но у меня проект на cakephp с большим количеством контроллеров и действий. Поэтому не очень охото писать под это дело регулярки, тем более что у cakephp уже есть базовый .htaccess. Предположим стоит задача защитить авторизацию пользователя. В кейке есть удобный компонент Security.  Который помимо защиты форм обладает еще и requireSecure. Итак, первым делом нужно подключить компонент и описать функцию обратного вызова которая будет переключать текущую страницу на https.

public $components = array('Security');
var $uses = array('User');
   
public function __enableSSL() {
  if (env('HTTPS') != 'on') {
    $this->redirect('https://' . env('SERVER_NAME') . $this->here);
    }
}

Вызываться эта функция будет с помощью blackHoleCallback. В качестве параметров requireSecure примает массив действий для которых и будет проходить проверка на защищенность.

public function beforeFilter() {
  $this->Security->blackHoleCallback = '__enableSSL';
  $this->Security->requireSecure('login','logout');
}

После выполнения защишенного действия мы всегда можем вернуться на http

$this->redirect('http://' . env('SERVER_NAME') ....);

© GM
| Комментировать статью |
  • Tiger +458 (24.07.2013 15:28)
    А браузер не будет с ума сходить?
    | Ответить |
    • GM +2587 (27.07.2013 09:53)
      Нет, ты же можешь открывать сайты как с https так и с http
      | Ответить |