【问题标题】:Force only admin to use HTTPS in CodeIgniter application强制仅管理员在 CodeIgniter 应用程序中使用 HTTPS
【发布时间】:2016-05-10 04:57:08
【问题描述】:

我有一个 CodeIgniter 应用程序,我只想强制管理员使用 HTTPS 连接,而单个用户必须使用 HTTP。

我在控制器文件夹中有另一个文件夹用于管理员的控制器,所以我尝试重定向每个请求,其中包含服务器名称或服务器 IP 地址以及 URL 中的管理员。像这样的:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteRule !^/admin/(.*) - [C]
RewriteRule ^/(.*) http://www.example.com/$1 [QSA,L]

它应该将每个请求重定向到 http 站点,该站点不包含 URI 中的 admin 表达式,但无法正常工作且仍在使用 HTTPS。我的基本网址是:

$config['base_url'] = 'https://127.0.0.1';

我想要这个:

http://127.0.0.1/blog for users
https://127.0.0.1/admin/blog/addnew for admin

【问题讨论】:

  • 为什么不允许非管理员用户使用 HTTPS?给非管理员额外的隐私也没有坏处。
  • 我知道,我想构建一个易受攻击的应用程序,用户可以在其中练习 MitM 攻击,但我想保护管理员。
  • 好主意。我认为这个问题可能会有所帮助 - stackoverflow.com/questions/8753987/…
  • 让每个人都使用 HTTPS 并没有错,尽管您也可以在 CI 本身的核心控制器中简单地执行此操作。只要检查当前用户是否有管理员权限,如果没有,重定向到http,如果他有权限,重定向到https?

标签: php apache codeigniter


【解决方案1】:

我不是 Apache 魔术师,但是这个应该工作 -

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}  [QSA,L]

来源:htaccess redirect all to https to http except for one folder

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2011-07-13
    • 2012-08-08
    • 2017-08-30
    • 2012-01-20
    • 2014-09-27
    • 2016-12-24
    相关资源
    最近更新 更多