升级https - 解决系统被网络运营商植入广告等问题

栏目: 服务器 · 发布时间: 5年前

内容简介:福建泉州的客户反馈, 说系统使用不正常, 经常提示 “网络错误”, 或者点击某些按钮时会进行页面跳转。让客户试过各种“万能”手段: 比如清缓存, 换浏览器, 换电脑等等,问题依然会复现。通过QQ远程桌面连接客户的电脑, 使用浏览器的Network控制台, 看到监控信息中莫名出现的加载内容, 如下图所示:

情景回顾

福建泉州的客户反馈, 说系统使用不正常, 经常提示 “网络错误”, 或者点击某些按钮时会进行页面跳转。

让客户试过各种“万能”手段: 比如清缓存, 换浏览器, 换电脑等等,问题依然会复现。

通过QQ远程桌面连接客户的电脑, 使用浏览器的Network控制台, 看到监控信息中莫名出现的加载内容, 如下图所示:

升级https - 解决系统被网络运营商植入广告等问题

怀疑是客户所使用的宽带运营商存在网页劫持和篡改行为。

让客户换运营商有点不太现实。

然后, 我们将后台管理系统升级为支持https的方式, 成功防止了无良网络运营商的广告注入、以及造成的系统不可用问题。

OK,成功搞定!

其中有一些值得记录下来的点:

  • 1、https网页中的js和css等控制资源, 不能加载 http协议下的资源, 所以使用CDN时需要注意。
  • 2、如果需要兼容 http与https, 则资源可以通过 // 开头, 如 <script src="//xxx.com/xxxx.js" ...
  • 3、https网页中的图片,可以引用http协议的资源。
  • 4、各种http跳转码是运营商的最爱,比如302,404,500等等。
  • 5、GET请求也是安全的,不加密的内容只有域名、IP、端口。
  • 6、HTTPS的好处: 加密传输、防止劫持、冒充、篡改、信息泄露。

HTTPS, HTTP over TLS, 主要强调的就是传输安全。 详细介绍请参考维基百科: HTTPS-超文本传输安全协议

如今各大互联网公司都已强制全站使用HTTPS。 国内比较知名的有:

HTTPS比起HTTP有很多好处, 当然, 成本会高一些, 比如证书的价格问题。

申请证书

现在申请顶级安全提供商的HTTPS证书, 价格已下降很多, 而且针对单个域名还有免费的证书可以申请。

如今各大云厂商都可以申请免费的HTTPS证书, 比如阿里云, 腾讯云等等, 一般来说需要你的域名托管在他们的平台, 否则的话申请会比较麻烦、需要进行一些配置与验证才会颁发证书。

申请免费证书

比如 阿里云免费提供的 “SSL证书”, 由 Symantec. 签发, 每个订单只支持单个明细子域名, 每人最多同时持有20个免费证书。

访问: https://www.aliyun.com/product/cas

然后购买产品时选择具体的购买类型即可。

升级https - 解决系统被网络运营商植入广告等问题

订单确认之后, 填写具体的域名信息, 如根域名 cncounter.com ,

www与根域名可使用同一张明细子域名证书。如 https://cncounter.comhttps://www.cncounter.com ;

关于 DV, OV, EV 的区别, 请参考: https://blog.csdn.net/diandianxiyu_geek/article/details/53175214

当然, 企业使用一般得购买通配符证书, 类似 *.cncounter.com 这种。

各家厂商的价格不一样, DV型的通配符域名证书每年约2000左右, OV通配符证书一般上万;

我们单位购买的是 GeoTrust 签发的通配符证书、一次性多购买几年, 算下来价格会优惠很多。

如果查看阿里云官方网站的Https证书,可以看到有效期只有2个月,这样能有效防止证书泄露或者被破解。当然,这需要的人力和IT运维资源也会增加。

部署SSL证书

如果使用阿里云, 可以下载各种格式的证书, 支持 Nginx, Apache, IIS, Tomcat等等。

以 Nginx 为例, 参考: http://www.nginx.cn/doc/optional/ssl.html

下载之后的证书文件,最好是修改为站点相关的名称,例如 cncounter.com.crt 等。

server {
    listen              80;
    listen              443 ssl;
    server_name         cncounter.com *.cncounter.com;
    ssl_certificate     /usr.local/www/cncounter.com.crt;
    ssl_certificate_key /usr.local/www/cncounter.key;
    ...

    proxy_set_header X-Forwarded-Proto $scheme;
}

可在Nginx中配置请求头 proxy_set_header , 将真实的协议传给Tomcat之类的后端服务器。

在Tomcat的配置文件 server.xml 中增加Valve, 请搜索 RemoteIpValve , 可大致参考: https://www.oschina.net/question/12_213459

<Valve className="org.apache.catalina.valves.RemoteIpValve" 
remoteIpHeader="x-forwarded-for" proxiesHeader="x-forwarded-by" 
protocolHeader="x-forwarded-proto" />

指定 protocolHeader="x-forwarded-proto" , 会将HTTP请求头中 x-forwarded-proto 的值设置为scheme, 这样 request.getScheme() , request.getRequestURL() 方法就能正确获取到客户端真实的协议, 如 https;

当然, 这里是因为我们的部署结构为: Nginx + Tomcat, Shiro拦截的时候需要读取这一信息。

RemoteIpValve的官方文档为: https://tomcat.apache.org/tomcat-8.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html

注意: 如果Tomcat版本不一致,则 RemoteIpValve 可配置的属性会有些差别,参考官方文档进行配置即可。

日期: 2019年01月23日

作者: 铁锚 - https://blog.csdn.net/renfufei


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CLR via C#

CLR via C#

(美)Jeffrey Richter / 周靖 / 清华大学出版社 / 2010-9 / 99.00元

本书针对CLR和.NET Framework 4.0进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。全书5部分29章。第Ⅰ部分介绍CLR基础,第Ⅱ部分解释如何设计类型,第Ⅲ部分介绍基本类型,第Ⅳ部分以实用特性为主题,第Ⅴ部分花大量篇幅重点介绍线程处理。 通过本书的阅读,读者可以掌握CLR和.NET Framework的精髓,轻松、高效地创建高性能应用程序。一起来看看 《CLR via C#》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具