前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯EdgeOne产品测评体验—Web安全的攻与防:云端防护一体化

腾讯EdgeOne产品测评体验—Web安全的攻与防:云端防护一体化

原创
作者头像
德宏大魔王
修改2024-04-17 14:59:52
4.9K0
修改2024-04-17 14:59:52
举报

简介

EdgeOne,作为腾讯云推出的全新CDN解决方案,集合了域名解析、智能加速、四层加速、安全防护以及边缘函数计算等多元化服务。自今年8月开放订阅以来,越来越多的网站选择EdgeOne作为他们的加速与防护伙伴,其受欢迎程度可见一斑。

然而,随着网络攻击的日益猖獗,尤其是针对Web应用程序和API的攻击逐年激增,网站安全成为了开发者们不得不面对的重要问题。DDOS攻击、零日漏洞利用等事件频发,给网站带来了巨大的风险。为了解决这些安全问题,EdgeOne持续升级其产品能力,致力于为用户提供更安全、更易用、更开放的服务。但实际效果如何呢?

本次测试,我们将对EdgeOne进行全面评估,从站点加速性能到安全防护能力,以验证其是否真正能够为用户提供一体化防护,我们将从多个维度对EdgeOne进行全面评估,包括站点加速性能、XSS防护能力以及SQL注入防御等可能威胁Web安全的各个方面,以此来验证EdgeOne是否能够实现真正的一体化防护。

接入准备

EdgeOne购买及接入

通过访问EdgeOne的官网并进行下单购买,我们选择了基础版。基础版和个人版的差别还是很大的,除了流量外,在安全能力上有很大提升,EdgeOne基础版开放了CC/WAF/速率限制等更多高级防护能力,能够更好的保障站点安全,对于首次使用的开发者,建议根据自身情况选择合适的版本。

按流程往下

开通成功后前往控制台,来到已购买的套餐服务页面

绑定站点

注意:这里建议用已备案的域名操作

接入域名是腾讯云已备案的域名,具备全球访问能力。因此,这里选择了全球可用区,并使用CNAME方式接入,这是非常合适的选择。通过CNAME接入,能够充分利用EdgeOne的全球加速服务,提升域名的访问速度和稳定性。操作时请确保CNAME设置正确,并持续关注域名的解析情况。

descript
descript

为了验证网站归属权,需要进行验证

descript
descript

前往域名解析商进行解析即可

descript
descript

完成归属验证

descript
descript

体验:操作步骤简单明了,条理清晰,支持多种接入验证,方便快捷,引导效果很棒!

服务器环境配置

添加测试站点

对同一个站点,添加两个域名:test(接入EdgeOne)和test2(正常),确保访问的网站项目是一致的不会给测试带来其他问题,通过下面的测试观察test和test2在EdgeOne 的影响下有什么区别?

测试域名为ICP备案域名 test.**.club

descript
descript

关闭防护

为了验证后面的CDN加速、SQL注入、XSS攻击,由于服务器自身就有一定的防护,于是在测试前需要关闭主机防火墙及攻击站点的php环境,并删除PHP禁用函数等

宝塔系统防火墙

已关闭

站点选择PHP低版本5.4

已完成

去除禁用函数

已完成

niginx防火墙

已关闭

关闭系统防火墙

descript
descript

关闭Nginx防火墙

descript
descript

安装php5.4,去掉禁用函数,关闭防护

descript
descript

关闭后的站点测试将会在下方继续说明

安全性能测试

XSS攻击

我们已经介绍过了域名test和test2的区别,这里不做过多的赘述,接下来写一个php脚本用来测试攻击情况

代码语言:php
复制
<?php
$xss = $_GET['x'];
echo $xss;
?>

这里选择PHP5.4是因为PHP5.6以下的版本存在漏洞,无法有效防御一些简单的攻击。为了更好地体验在毫无防备的情况下EdgeOne的作用,我们特意选择了这个版本。

携带xxs代码的参数访问域名,我们可以发现,被宝塔防火墙拦截了,攻击无效

descript
descript

如果我们关闭了防火墙以及之前提到的服务器环境防护措施,就会发现XSS攻击生效了。这个时候,就说明我们的防护体系已经全面失效,可能会面临不法分子的入侵风险。

descript
descript

test2测试

接下来我们测试接入EdgeOne的域名test进行测试,携带xss代码的参数访问域名,同样会受到xss脚本攻击

descript
descript

观察EdgeOne的安全分析,发现存在日志,为什么日志有命中纪录但是却不拦截?这时候你可能会说接入了EdgeOne也许没有用?

descript
descript

其实还有一个步骤没有操作,需要设置web防护规则

登录 边缘安全加速平台控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点,进入站点详情页面。

descript
descript

在站点详情页面,单击安全防护 > Web 防护

descript
descript

在 Web 防护详情页左侧的防护域名列表中,选择需开启防护的域名

descript
descript

注意:由于我的是站点全局策略,所以我们需要使用上面的【站点全局策略】

找到托管规则卡片,单击设置

descript
descript
descript
descript

将XSS跨站脚本攻击防护处置方式改为拦截

descript
descript

注意:需要将下方的观察模式关闭,否则无效

descript
descript

开启后我们进行测试访问,EdgeOne拦截效果比宝塔的防护还做得好,直接断开连接

descript
descript

通过F12查看网络资源发现返回状态码566 Waf Forbid

descript
descript

当携带参数为x=1时可以通过,因为这个时候的参数是正常的并非一些xss脚本,于是EdgeOne就放行通过了

descript
descript

我们再来对比一下相同站点不同域名的test2,test2没有做任何防护,依然可以进行xss漏洞攻击

descript
descript

经过各种详细的比对,不难得出EdgeOne可以轻松完成Web网站的安全防护,如果你是刚刚进入Web领域的小白或者是小微企业,想将安全防护做好,却缺乏专业指导,不妨试试EdgeOne,接入简单,投入时间少,关键是安全可靠,后台数据日志全部可视化,可针对不同地区、不同方案配置安全托管规则

sql注入

刚刚在XSS攻击测试下已经对test域名启用了EdgeOne的防护,现在我们直接测试test和test2进行比较看下防护效果

编写一个简单的弱口令:

代码语言:actionscript
复制
 x=' OR 1=1#

通过x进行参数传递,下面两个窗口进行比较,左边为原站(test2),右边为接入EdgeOne的域名(test)站点,效果显著,左侧窗口代码被执行了,右侧窗口提示无法访问此网站(566 Waf Forbid)

descript
descript

当web应用向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据,把用户输入的数据当作代码来执行,违背了“数据与代码分离”的原则。如果您担心自己的Web站点或者接口有SQL注入风险,建议对接EdgeOne,一步到位!

站点加速测试

代码测试

接下来我们对两个域名的网文进行测速,通过代码:

代码语言:python
复制
import pycurl
import os, sys
import time
import sys
from loguru import logger
import time

# 在window环境下,必须要加./否则创建失败
# logger.add('./network.log',
#            level='DEBUG',
#            format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
#            rotation="10 MB")
logger.add(os.path.dirname(os.path.realpath(__file__)) + "/1111111.txt",
           level='DEBUG',
           encoding='utf-8',
           format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
           rotation="10 MB")


def ce_net_work():
    URL = "http://test*******"  # 测试网站的域名
    # try:
    #     URL=sys.argv[1]    # 测试网站的域名
    # except Exception as e:
    #     logger.info ("Error:"+str(e))
    #     logger.info ("用法:请输入要探测的web地址")
    #     sys.exit()

    c = pycurl.Curl()
    c.setopt(pycurl.URL, URL)
    c.setopt(pycurl.CONNECTTIMEOUT, 5)
    c.setopt(pycurl.TIMEOUT, 5)
    c.setopt(pycurl.NOPROGRESS, 1)
    c.setopt(pycurl.FORBID_REUSE, 1)
    c.setopt(pycurl.MAXREDIRS, 1)
    c.setopt(pycurl.DNS_CACHE_TIMEOUT, 30)

    indexfile = open(os.path.dirname(os.path.realpath(__file__)) + "/content.txt", "wb")
    c.setopt(pycurl.WRITEHEADER, indexfile)
    c.setopt(pycurl.WRITEDATA, indexfile)
    try:
        c.perform()  # 提交请求
    except Exception as e:
        logger.info("connecion error:" + str(e))
        indexfile.close()
        c.close()
        sys.exit()

    NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME)
    CONNECT_TIME = c.getinfo(c.CONNECT_TIME)
    PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME)
    STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)

    TOTAL_TIME = c.getinfo(c.TOTAL_TIME)
    HTTP_CODE = c.getinfo(c.HTTP_CODE)
    SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)
    HEADER_SIZE = c.getinfo(c.HEADER_SIZE)
    SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD)

    logger.info(os.path.dirname(os.path.realpath(__file__)))
    logger.info(os.getcwd())

    logger.info("测试网站:".format(URL))
    logger.info("HTTP状态码:{}".format(HTTP_CODE))
    logger.info("HTTP状态码:%s" % (HTTP_CODE))
    logger.info("DNS解析时间:%.2f ms" % (NAMELOOKUP_TIME * 1000))
    logger.info("建立连接时间:%.2f ms" % (CONNECT_TIME * 1000))
    logger.info("准备传输时间:%.2f ms" % (PRETRANSFER_TIME * 1000))
    logger.info("传输开始时间:%.2f ms" % (STARTTRANSFER_TIME * 1000))
    logger.info("传输结束总时间:%.2f ms" % (TOTAL_TIME * 1000))
    logger.info("下载数据包大小:%d bytes/s" % (SIZE_DOWNLOAD))
    logger.info("HTTP头部大小:%d byte" % (HEADER_SIZE))
    logger.info("平均下载速度:%d bytes/s" % (SPEED_DOWNLOAD))

    logger.info("\n\n\n\n\n")

    # 关闭文件及Curl对象
    indexfile.close()
    c.close()


__console = sys.stdout  # 用于后期还原


def write(data):
    with open(os.path.dirname(os.path.realpath(__file__)) + "/content2222222222222.txt", "a+") as f:
        f.write(data)
        f.write('\n\f')


write(os.getcwd())
write(os.path.dirname(os.path.realpath(__file__)))
# write(URL)

# 把打印重定向文件
f = open('./outfile.log', "a+")
sys.stdout = f
print('jjdjdjd')

while True:
    ce_net_work()

    print('in outfile')
    time.sleep(5)
    pass

测试test(未接入)的访问速度

descript
descript

给test2添加CDN

descript
descript

选择网站加速

descript
descript

继续验证解析域名

descript
descript
descript
descript

返回刷新已经生效

descript
descript

测试一下套上了CDN的域名test

descript
descript

测试项目

DNS解析时间

建立时间

传输时间

下载速度

比较

test(未接入CDN)

36.7ms

92.29ms

92.68ms

6232 b/s

?良好

test(已接入CDN)

3.68ms

55.21ms

55.47ms

6932 b/s

?优秀

通过在线工具对比测试

和之前一样,解析一个test2的域名用来做对照

descript
descript

相同服务器,不同域名,test2域名为对照组,test域名套上CDN

descript
descript

通过第三方工具检测到从不同地区访问test2 域名的ip只有一个,而test有多个ip指向(应对不同地区访问选择),对此可表明CDN加速成功

descript
descript
descript
descript

判断当前域名是否套上了CDN,也可通过腾讯云自带的 自主诊断工具进行排查

descript
descript
descript
descript

Ping检测

test(CDN)

descript
descript

test2(非CDN)

descript
descript
descript
descript

tcping

test

descript
descript

test2

descript
descript

网站测速

test

descript
descript

test2

descript
descript

由于我的服务器是腾讯云的,服务器在国内加速优势不是很明显,但是对于大陆以外的地区,加速效果提升的很快。上面的测试数据,虽然对比差别不大,但是CDN是起到了加速的效果,如果放在一些访问速度很慢的域名,会有质的提升。

HTTPS证书

在当今数字化的互联网时代,HTTPS访问已经成为保障网站安全、提升用户体验和搜索排名的不可或缺的一环。小程序开发上线时,接口的安全性更是至关重要,必须使用HTTPS协议。如果网站未启用HTTPS,不仅安全风险大增,还会被浏览器打上“不安全”的标签,更可能导致搜索引擎排名下降。因此,为域名申请SSL证书,实现HTTPS访问,已成为每个网站运营者的必然选择。传统的SSL证书申请和部署过程往往繁琐复杂,且免费证书通常存在时效性限制,需要定期手动更新,这无疑增加了维护成本和时间成本。然而,EdgeOne的免费HTTPS证书功能彻底改变了这一现状。它提供了一键申请和自动续期的服务,无需再为证书更新而烦恼,全程自动化管理,轻松开启HTTPS访问。

申请和部署EdgeOne的免费证书至您的网站,其实非常简单。只需几个简单的步骤,您就能享受到安全、快捷的HTTPS服务。以下是具体的操作步骤:免费证书部署至 EdgeOne 域名

操作步骤

(1) 登录 边缘安全加速平台 EO 控制台,通过站点列表,选择需配置的站点,进入站点管理二级菜单。

  1. 在左侧导航栏中,单击域名服务 > 域名管理。
  2. 在域名管理页面,选择待配置证书的域名,在 HTTPS 列内单击编辑,弹出 HTTPS 证书配置。
descript
descript

(4) 选择申请免费证书后,单击确定,即可完成免费证书的申请和安装。

  1. 部署完成后,您可以在域名管理列表页中,将鼠标悬停于已配置图标上,可展示当前已部署的证书信息。
descript
descript

优点

优点

一键申请

省时省力无需繁琐流程,简单几步即可完成证书申请

自动续期

确保网站始终安全,无需考虑到期续费更换等问题

全程自动化

轻松管理自动化管理,无需手动操作,让您专注于业务发展

总结

随着云计算和边缘计算技术的不断发展,EdgeOne有望继续在技术层面进行创新,提升边缘加速和安全防护的能力,为用户提供更加高效、安全的网络服务。

EdgeOne的优缺点

开发者在使用 EdgeOne 来为自己网站进行加速和防护,更安全稳定、节省成本,具有以下优势:

descript
descript

优点

描述

边缘加速与安全加固结合

通过边缘计算技术实现快速内容传输和访问,同时提供强大的安全防护功能

性价比高

市面上能够提供EO基础版套餐能力的多是产品组合方案,组合价格需要上千元,防护安全以及性能不如EdgeOne,相比较下来EdgeOne仅需399元/月,活动期还有价格优惠,是很有性价比了

卓越性能

优化网络链路和数据传输,实现快速的内容加载和低延迟

强大的安全防护能力

提供多重安全防护机制,有效应对各种网络攻击和恶意访问

一站式整合服务

集成多项功能(DNS解析、四层代理、站点加速、智能加速、DDoS防护、Web防护、Bot防护、负载均衡等多项功能),为用户提供全方位的安全和性能保障。提供全面的安全和性能保障

全球覆盖

在全球范围内部署边缘节点,覆盖广泛

缺点

描述

部署和配置复杂性

对于某些用户而言,产品的部署和配置可能相对复杂,但综合来看优点大于不足

功能冗余

对于只需要部分功能的用户而言,全功能的集成可能导致不必要的复杂性,但这和较高的安全性能比较显得微不足道

这个产品卖这个价位还是非常有性价比的,大家感兴趣的可以去体验一下:/act/pro/edgeone\_techoday\_promotion?from=22008

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 接入准备
    • EdgeOne购买及接入
      • 服务器环境配置
        • 添加测试站点
        • 关闭防护
    • 安全性能测试
      • XSS攻击
        • sql注入
        • 站点加速测试
          • 代码测试
            • 通过在线工具对比测试
              • Ping检测
                • tcping
                  • 网站测速
                  • HTTPS证书
                    • 操作步骤
                      • 优点
                      • 总结
                        • EdgeOne的优缺点
                        相关产品与服务
                        内容分发网络 CDN
                        内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档

                        http://www.vxiaotou.com