浅析人工智能技术在网络安全领域中的应用

文 | 绿盟科技集团股份有限公司 顾杜娟 杨鑫宜 王星凯 刘文懋 叶晓虎

企业数字化转型浪潮的来临促使人工智能技术得到了企业的普遍关注和重视。人工智能技术发展至今已经广泛应用到图像识别、自然语言处理等领域,并取得了重大的突破。随着网络空间逐渐成为数字经济发展的基石,网络空间的攻击面也不断地延伸和拓展,网络空间攻防双方信息的不对称性现象愈发明显。伴随着攻防对抗态势的升级,人工智能技术成为网络安全技术发展的必然趋势之一。近年来,越来越多的企业和组织将人工智能技术与网络安全技术进行深度协同,人工智能技术在网络安全领域的应用已经成为安全能力落地、发挥网络安全防御有效性和对抗高级持续性威胁(Advanced Persistent Threat,APT)等高级威胁最直接、最关键的环节之一。面对日趋白热化、持续化的网络攻防对抗环境,如何将人工智能技术赋能网络安全面临着诸多挑战。

最近 ChatGPT 因广泛应用先进的人工智能技术而备受关注,人工智能技术在传统网络安全领域一直被视为一把“双刃剑”。安全厂家可以使用人工智能驱动的安全工具和产品,自动化、智能化地应对大量网络安全攻击事件。但黑客也可以利用同样的技术开发智能恶意软件程序并发起隐形攻击。本文将介绍人工智能在网络攻击中的应用、人工智能技术在网络安全防御中的应用,以及 ChatGPT 这一备受瞩目的大语言模型(Large Language Models,LLMs)在网络攻防中的应用、自身风险及防御策略。人工智能技术已经被全面应用于网络空间安全领域,在应对数字化转型过程中的各类安全难题上发挥着巨大潜力。

一、人工智能在网络攻击中的应用

人工智能技术的发展促使攻击者引入机器学习、深度学习等方法,以提高网络攻击的自动化、智能化和武器化,近一半提高了攻击数量和复杂度,并加大了攻击被检测到的难度。人工智能技术从三个阶段助力网络攻击:攻击准备、攻击实施、攻击善后。

(一)攻击准备

网络攻击准备旨在侦查、研究攻击目标的敏感信息和漏洞,为后续设计攻击策略提供信息依据和参考。在攻击准备中,攻击者引入机器学习和深度学习技术实现以下几个任务内容:

第一,口令破解。口令是防范攻击者入侵目标网络的一道重要防线,一旦口令破解成功,攻击者就可以获取数据库的管理员权限和用户账号内的个人信息。为了完成口令破解,攻击者常常使用人工智能技术如 PassGAN、GENPass 等口令破解模型,它们基于生成对抗网络框架和长短期记忆网络 LSTM、残差网络 ResNet 等神经网络,自动学习口令分布,并能够在几秒内破解不超过六位字符的口令,同时生成丰富多样的口令。

第二,文本验证码破解。为了防止 DDoS 攻击,谷歌、百度、微软在内的很多企业在网页中引入了文本 CAPTCHA 自动化地区分程序和人类。基于字符分割的破解方案在面对 CAPTCHA 中越来越复杂和扭曲的字符时越发吃力,因此,深度学习的引入提高了文本验证码破解的通用性和有效性。例如,研究人员将生成对抗网络自动生成的文本验证码作为训练数据,再基于迁移学习微调文本识别模型,不仅避免了收集大量真实验证码样本,在效果上也能够破解 33 种文本 CAPTCHA 方案。

第三,钓鱼攻击和垃圾邮件生成。马尔可夫模型、长短期记忆网络 LSTM、自动编码器 AE、生成对抗网络 GANs 以及大规模语言模型 LLMs 等人工智能技术可以作为自动生成邮件的有效工具。对于 Transformer、BERT、GPT 生成式大模型来说,制造钓鱼邮件和垃圾邮件的成本很低,只需给出关键提示词,这些模型就可以在秒级内生成大量逼真、切题的鱼叉式钓鱼邮件和垃圾邮件,继而成为钓鱼攻击和拒绝服务攻击的跳板。

第四,网络资产自动探测。网络资产探测旨在掌握目标网络的设备属性、应用属性等资产信息,一般包括操作系统探测、端口探测、IP 存活性探测、流量采集等。朴素贝叶斯分类器、支持向量机、决策树、随机森林、卷积神经网络等人工智能算法在网络资产指纹识别和特征匹配方面已经得到了应用,基于网络流量指纹、Web 指纹等类型的指纹数据,被训练和优化过的人工智能模型可以实现被动和主动的设备识别。

第五,漏洞挖掘。漏洞挖掘旨在发现和分析软件、系统生命周期中存在的安全缺陷。人工智能技术基于漏洞数据库中提取的漏洞知识和特征,实现漏洞自动挖掘和预测。支持向量机、逻辑回归、决策树、随机森林等机器学习算法,以及卷积神经网络、循环神经网络、长短期记忆网络、图神经网络、生成对抗网络等常见的深度学习模型都已经在漏洞挖掘领域得到了广泛研究。这些算法基于软件度量、代码属性、文本语法语义特征,通过合理的数据处理、数据表征、模型构造与优化,能够自动地在智能合约、物联网、浏览器、二进制程序等目标上实现漏洞挖掘,结合使用人工智能漏洞挖掘技术和传统程序分析技术可以进一步提高漏洞挖掘的性能和效果。

(二)攻击实施

在获取目标关键信息和发现有效漏洞后,攻击者就会实施漏洞利用、入侵、渗透等攻击行为。人工智能在以下几个方面赋能攻击实施:

第一,恶意软件生成。人工智能技术从协助恶意软件逃避检测、自主适应执行环境、生成恶意软件变体等多方面赋能恶意软件。Swizzor 恶意软件家族中已被发现的二进制样本高达数百万个,恶意软件生成速度之快正是借助机器学习算法自动生成恶意软件变体的能力,生成的变体在保有与之前版本相似特征的同时增加了攻击的隐蔽性,极大地推动了恶意软件的传播。

第二,漏洞利用。公开的安全漏洞报告、系统漏洞补丁、前期挖掘到的漏洞信息均可以作为漏洞利用的数据源。而人工智能中的自然语言处理可以从中提取漏洞的特征信息,并自动化生成漏洞利用程序,从而引导后续的漏洞定位和攻击路径搜索等过程。例如,SemFuzz 使用 NLP 提取 CVE 报告、Linux git 日志中的漏洞文本信息来自动生成 PoC exploits,同时发掘了未公开的漏洞。

第三,自动渗透测试工具。自动化渗透测试工具可以通过一键式完成渗透测试全流程,包括漏洞信息收集、漏洞扫描、漏洞分析、漏洞利用、后渗透攻击以及报告生成等。例如,DeepExploit框架在 Metasploit 基础上使用 A3C 强化学习算法提升渗透测试的效率。而 Shennina 框架则使用人工智能技术实现了全自动主机渗透,其中人工智能负责自动识别可用的渗透方案、提供漏洞利用技术以及执行渗透测试等任务。

(三)攻击善后

攻击善后的重要目标之一在于模糊、隐藏攻击行为的存在与攻击意图,以提高攻击隐蔽性,降低被检测的风险。

第一,流量模仿。在攻击过程中产生的恶意流量经过检测和分析会暴露攻击信息,因此自适应地模仿正常流量是掩盖网络攻击的重要方式。现有的人工智能流量模仿方案大多基于生成对抗网络及其变体 WGAN、WGAN-GP 等。GANs 通过学习正常流量的特征分布和表现,模仿生成的流量能够显著降低现有入侵检测系统的效果,极大地增强了恶意攻击的隐蔽性。

第二,攻击意图混淆和掩盖。攻击意图的掩盖是恶意软件的一个重要目标,运用机器学习和深度学习技术能够有效提高恶意代码的生存能力和免杀效果。例如,IBM 提出的恶意软件 DeepLocker 嵌入了深度神经网络 DNN,识别到攻击目标后实施针对性攻击,在隐藏攻击意图的同时增加了攻击隐蔽性。除此之外,基于 GAN、强化学习框架生成的静态可执行文件能够成功绕过恶意软件检测机制。

二、人工智能技术在网络安全防御中的应用

由于攻击者会利用大数据分析、自动化工具等先进技术来提升恶意攻击的效率和隐蔽性,倒逼网络安全防御突破传统网络安全防御阶段。研究人员逐渐运用人工智能技术直接或间接地提高网络安全防御效率,在实际攻防实战中快速地定位威胁攻击,提升网络安全防御的自动化、智能化水平。目前,人工智能技术在网络安全防御中的应用包括以下几个方面:

(一)攻击检测

第一,网络入侵检测。为了提升网络入侵检测的性能,研究人员正在逐渐将深度学习网络,如卷积神经网络 CNN、循环神经网络 RNN,以及对抗神经网络和强化学习等技术应用到网络入侵检测中。虽然这些技术已经取得了初步成果,但在大型动态系统中有效地实现基于人工智能技术的网络入侵检测依旧面临困难。

第二,垃圾邮件检测。基于人工智能技术的垃圾邮件检测方案已经发展多年。目前,谷歌表示基于人工智能技术的 Gmail 垃圾邮件识别率高达 99.9%。由于垃圾邮件的数量巨大,0.1% 的垃圾邮件依然会给用户带来很多问题。因此,如何采用新的人工智能技术不断改善垃圾邮件检测技术依旧值得深入研究。

第三,恶意软件识别。目前大多数传统基于机器学习的恶意软件检测方法属于监督式学习,这些方法容易被攻击者绕过。研究人员通过利用强化学习技术提出了 DQEAF 框架,该框架通过不断与恶意软件样本进行交互来训练人工智能代理,利用强化学习方法来规避反恶意软件引擎,以突显近年来基于监督学习的恶意软件检测模型的弱点。

第四,加密流量检测。随着 TLS 加密技术在互联网上的普及,如何通过不解密的方式直接从海量的加密流量中检测出恶意流量是学术界和工业界非常关注的问题。从技术发展趋势来看,下一代技术是基于大数据的统计特征,即在大量数据上进行统计,基于统计的结论提取能够描述样本分布本质原因的特征,这个过程将由擅长分析数据统计规律的人工智能来实现。但是在流量识别领域,人工智能尚处于起步阶段,暂时不适合做最后一步的判定,而是适合数据处理和辅助决策,基于人工智能的加密流量检测将会是长期的研究课题。

(二)攻击防范

第一,漏洞修复。机器学习和深度学习算法可以实现漏洞自动化修复,及时弥补系统缺陷。GenProg 使用遗传编程修补程序源代码,DeepRepair 在此基础上使用深度学习生成修复方案。由于漏洞类型繁多、漏洞定位困难等因素的存在,目前人工智能修复漏洞仍需要人工参与和研判。可靠的全自动化漏洞修复技术需要进一步的研究投入。

第二,攻击预测与拦截。通过学习已知漏洞的潜在特征,人工智能具备预测零日漏洞、未公开漏洞等未知威胁的能力。Check Point 的 Quantum Titan 平台利用深度学习技术防范网络钓鱼攻击和域名系统漏洞,相较于传统的签名防御技术实现了五倍以上的 DNS 攻击拦截率和四倍以上的零日钓鱼攻击拦截率。Darktrace 推出的 Antigena 人工智能产品检测网络中的访问行为、邮件传输、云端动态等活动中存在的异常行为和漏洞,及时自动阻断并拦截异常连接和操作,实现了自主响应网络攻击威胁。

(三)安全运营

基于人工智能在网络攻击和防御中的应用,进一步打造智能化、自动化的网络安全运营体系。

AISecOps(智能驱动安全运营)平台是安全运营与人工智能技术的融合,提供自动化异常行为分析、自适应防御策略生成、告警评估和攻击研判等功能。目前 Splunk、Broadcom 等企业都在重点布局相关技术。AISecOps 技术内涵可概括为:AISecOps 技术以安全运营目标为导向,以人、流程、技术与数据的融合为基础,面向预防、检测、响应、预测、恢复等网络安全风险控制、攻防对抗关键环节,构建具有高自动化水平的可信任安全智能模型,以辅助甚至代替人提供各类安全运营服务。未来,在 AISecOps 技术自动化水平提升过程中,需要打造人机智能协同的算法、模型、系统与流程,才能不断地适应高级别的自动化安全运营场景。

三、大语言模型在网络安全中的应用

最近 ChatGPT 因广泛应用先进的人工智能技术而备受关注,而让 ChatGPT 爆火的大规模语言模型(Large Language Models,LLMs)也引起网络安全界的高度关注,人们关注人工智能生成的内容工具所产生的影响,尤其是对网络安全的影响。人们担心,这些工具是否可以用于网络攻击或者防护?又是否暗藏新的网络安全隐患?

(一)大语言模型应用攻击和防御

根据现有研究资料和实践案例,LLMs 作为一种强大的人工智能技术,其在传统网络安全领域的应用既包括攻击性的应用也包括防御性的应用。

第一,LLMs 被应用于网络攻击。LLMs 的出现降低了攻击门槛,即便是没有太多攻防经验的攻击者,也可以通过和 LLMs 进行对话,可以更容易地发起多项网络攻击任务,如钓鱼邮件生成、撞库攻击、恶意代码生成、漏洞利用、渗透攻击等。LLMs 也被用于生成假新闻,散播不实信息,引发社会混乱或舆论控制。

第二,LLMs 被应用于网络防御。防御者可以借助 LLMs 优化攻击流量分析、恶意代码逆向分析等任务,也可以使用 LLMs 进行自动化响应编排、检测规则编写或辅助安全事件处置。LLMs 利用迁移学习微调各类攻击场景,以一个大模型检测各类型网络攻击,并与传统安全设备整合,助力传统安全产品革命性升级。

第三,LLMs 被应用于网络安全运营。LLMs 具备辅助建设网络安全运营体系的能力,能够承担安全运营体系的部分子功能,如构建安全运营知识库、担任人工智能技术客服或作战室管家、指导安全合规体系建设以及对各类制度文档进行自动合规迭代。微软提出利用基于 ChatGPT 的Security Copilot 进行辅助安全运营,并与微软拥有65万亿个网络安全威胁的安全模型库相结合使用,为企业、个人用户提供网络安全、恶意代码防护、隐私合规监控等自动化生成式人工智能服务。

(二)大语言模型自身风险与防御

LLMs 技术应用于网络攻防的同时,也带来了一系列新的安全风险。无论是作为攻击武器还是防御工具,LLMs 的引入都会因其自身脆弱性和自身面临的安全威胁给使用者带来额外的风险。

1. 可解释性不足导致的风险。现有研究尚无法清晰解释深度学习模型内部结构、神经元、参数的含义。透明性和可解释性的缺乏使得人们难以界定人工智能在网络攻防中的决策依据,也导致面对人工智能安全威胁难以有效地对症下药。

2. 内在脆弱性导致人工智能易受风险威胁。人工智能自身内在的脆弱性导致其易遭受到多种攻击,包括但不限于对抗样本、后门攻击、对抗重编程、图像缩放攻击等。这些攻击可能会劣化模型性能、影响模型决策,严重时会引发人工智能系统崩溃。

3. 隐私泄露风险进一步增大。除了数据滥用、数据违规收集引起的隐私泄露风险外,人工智能算法还面临着成员推断攻击、模型反演、模型窃取等新型隐私窃取风险,数据信息、模型信息失窃的可能性增大。

4. 算法框架和开源基础库存在漏洞。常见的开源深度学习框架及其第三方 SDK 中包含着多种漏洞,其中作为主流框架的 TensorFlow 被发现在接口、学习算法、编译、部署和安装中都存在漏洞,利用这些漏洞将导致逃逸攻击、拒绝服务攻击、堆溢出攻击等威胁。

对 LLMs 上述风险,可以采取以下防御措施提高人工智能系统的安全性:

1. 输入和输出过滤。可以设置过滤器,阻止 LLMs 模型生成或者接受某些类型的输入或者输出,比如有害的、冒犯性的或者不适当的内容。检测入模数据中的异常数据和离群值,丢弃或转化异常数据,避免影响模型效果。

2. 透明度和解释性。提供模型的工作原理和透明可审计的决策过程,以便用户能够理解和质疑模型的输出

3. 模型安全检测和防御。针对人工智能算法可能面临的投毒攻击、后门攻击等风险,设置基于特征压缩、局部本征维数等检测方案,同时采取对抗训练、数据增强等防御策略,保障模型和算法的安全。

4. 检测和修复框架漏洞。基于开源漏洞信息和模糊测试、深度学习等技术扫描框架中潜在的安全漏洞,及时修复框架和第三方库中的漏洞。

5. 模型知识产权维护。限制模型访问频率一定程度上可以缓解模型窃取攻击,而模型水印、指纹、签名技术可以识别和验证可疑模型是否为窃取模型,从而保障模型知识产权。

LLMs 技术的使用应该在持续的监督和调整下进行,以便及时发现和纠正问题。此外,以上防御措施的实施需要考虑到伦理、法律和社会因素,以确保新人工智能技术的使用是可靠和可持续的。

四、结 语

随着人工智能技术与网络安全攻防的融合,网络安全领域正在全面、深刻地改变。恶意攻击者不断地向着规模化、组织化、军事化,攻击技术的自动化、智能化、武器化的方向发展。如何基于人工智能技术与攻击者进行安全对抗,保障网络安全,愈发成为网络空间中攻防双方角力的重点。大语言模型技术将进一步推动网络安全攻防的变革。虽然目前相关大语言模型技术在网络安全领域的应用尚未成熟,存在诸多挑战。但是谁能抢先找到相关技术与网络安全攻防的最佳结合点,就会掌握在网络安全攻防博弈的主动权。因此,推动人工智能技术在网络安全攻防场景中不断走向实际应用,提升网络防御能力,对于网络安全智能不断走向成熟具有重大意义。

(本文刊登于《中国信息安全》杂志2023年第5期)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/23774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux】(5)head和tail

head head 用于显示文件的前几行。 基本用法 head [OPTION]... [FILE]...常用选项 显示文件的前 N 行 head -n N filename例子:显示文件 filename 的前 10 行(默认)。 head filename例子:显示文件 filename 的前 5 行。 he…

零售行业运营有哪些业务场景?详解各业务场景的分析指标和维度

在当今这个数字化迅速发展的时代,零售行业正经历着前所未有的变革。传统的零售模式正在被新兴的技术和创新的业务场景所颠覆,消费者的需求和购物习惯也在不断地演变。零售行业的运营,作为连接消费者、产品和市场的关键环节,对于零…

头歌初识redis答案

头歌初识Redis的答案可以从多个方面进行归纳和总结。以下是根据参考文章提供的信息,按照清晰、分点表示和归纳的方式给出的答案: 一、Redis基础知识 Redis有16个数据库,默认使用第0个数据库,可以用select命令进行切换。 Redis是…

五八 领岳科技面经 2024.06.06

五八面经 1、多线程打印有多少种实现方式? 2、ReentrantLock中的公平锁是怎么实现的? 3、Redis用在什么场景下?分布式锁怎么设置?如何解锁?如果想要续锁应该怎么做? 4、redis单线程怎么支持10w qps的并…

webpack 预加载资源

1 效果图对比 preload.js就是我们预加载的资源 1.1什么情况下使用预加载 比如:是用户点击按钮时才加载这个资源的,如果资源体积很大,那么用户会感觉到明显卡顿效果 要优化这种情况,可以使用preload和prefetch技术 1.2 2.什么是…

【Python Cookbook】S01E24 如何定义正则表达式模式从而准确匹配内容,通过 ? 调整贪心策略为非贪婪

目录 问题解决方案讨论 问题 如果使用正则化表达式,或者说如何通过准确定义正则化表达式的模式从而对字符串内容做准确的匹配? 解决方案 例如,在下述案例中,如何匹配出字符串文本 text_1 中双引号扩起的内容。 import repatte…

Navicat修改数据库主键

在MySQL数据库,主键ID默认自增(最大的数字自增),但是,在某些情况下,我们想将其从头开始………… 借助Navicat修改数据库主键即可! 1. 找到数据库,点击需要更改的表:点击…

Bootstrap blazor中改变table组件中鼠标经过时行的背景色

在table组件中,有个行高亮的设置,但是它是基于内容的行高亮,至于怎么在鼠标经过时行高亮就没有说了,百度上好多针对这方面设置的内容都是无效的,可能对以前的版本有效果吧。 自定义行高亮 通过设置 SetRowClassForm…

使用Apache Kafka构建可扩展的消息系统——Java的高吞吐数据处理

引言: 在处理大数据和实时事件驱动架构时,Apache Kafka展示了其强大的能力。作为一个高性能的消息队列,Kafka支持数据的发布和订阅,以及对数据流的存储,使其成为构建复杂的实时应用程序的核心组件。 什么是Apache Ka…

经典算法 - 回溯法

文章目录 1. 基本概念2. 组合问题3. 组合总和Ⅲ4. 电话号码的字母组合5. 分割回文串6. 复原IP地址7. 子集8. 全排列9. 全排列Ⅱ10. N皇后11. 解数独 1. 基本概念 递归和回溯相辅相成。只要有递归,就会有回溯。 回溯法是一种纯暴力的搜索,并不是一种高效…

uniapp在自定义tabbar上动态修改svg图标颜色和字体颜色

需求&#xff1a;在uniapp项目内&#xff0c;自定义tabbar&#xff0c;需要将图标更换成svg格式&#xff0c;可动态修改图标及字体颜色。 效果图如下&#xff1a; 我使用的是uniapp结合uview2的组件使用&#xff0c;代码如下&#xff1a; <u-tabbar :value"currentIn…

Spring-Security(二)OAuth2认证详解(持续更新)

Spring Security & Oauth2系列&#xff1a; Spring Security&#xff08;一&#xff09; 源码分析及认证流程 Spring Security&#xff08;二&#xff09;OAuth2认证详解及自定义异常处理 文章目录 1、OAuth2.0 简介1.1 OAuth2.0 相关名词解释1.2 四种授权模式 1.3 、OAu…

10、架构-从类库到服务之网关路由

目录 概述 主要概念 网关的定义与重要性 历史背景 网关的发展与演变 技术细节 网关的职责 路由功能 过滤功能 实现网关的技术选择 四层和七层网关 性能与可用性 网络I/O模型 BFF网关 实际应用 常见的网关实现框架 常见问题及解决方案 结论 概述 网关&#x…

大型零售企业总部到分公司数据发放,有没有更优化的方案?

大型零售企业在市场经济中扮演重要角色&#xff0c;是保证基础商品生产、流通和供给的重要一环。随着企业发展&#xff0c;很多大型零售企业都会在全国、乃至全球各地开设分公司&#xff0c;用以降低生产和运营成本&#xff0c;更好地提供本地化服务。 为了保证总部与分公司间信…

Linux环境---在线安装jdk

Linux环境—在线安装jdk 一、使用步骤 1.安装环境 JDK版本&#xff1a;1.8 1.1 建立存放软件的目录 注意&#xff1a;此处本人是将需要按照的软件存放在directory目录下&#xff0c;可根据实际情况调整接收路径。 命令如下&#xff1a; mkdir directory2.安装jdk 2.1 建…

解决Spark流处理产生的小文件问题

做流批一体&#xff0c;湖仓一体的大数据架构&#xff0c;常见的做法就是&#xff1a; 数据源->spark Streaming->ODS&#xff08;数据湖&#xff09;->spark streaming->DWD&#xff08;数据湖&#xff09;->... 那么数据源->spark Streaming->ODS&…

【Selenium+java环境配置】(超详细教程常见问题解决)

Seleniumjava环境配置 windows电脑环境搭建-chrome浏览器1. 下载chrome浏览器2. 查看chrome浏览器版本3. 下载chrome浏览器驱动4.配置系统环境变量PATH 验证环境是否搭建成功1. 创建java项目&#xff0c;添加pom文件中添加依赖2. 编写代码运行 常见问题&解决办法1.访问失败…

Python 脚本打包

打包 为什么要打包 当你想将Python脚本给别人用时&#xff0c;怎么办&#xff1f;Python运行依赖相关的环境&#xff0c;因此将脚本打包成exe&#xff0c;直接运行exe即可 怎么打包 本文介绍的方法是Pyinstaller Pyinstaller 安装 想要使用&#xff0c;必须保证该模块存…

移动端 UI 风格,魅力无限

移动端 UI 风格&#xff0c;打造极致体验

Django分页

1、在视图函数文件中引入‘分页器’ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 2、给原来的罗列信息函数&#xff0c;添加分页功能&#xff0c;即按照页码&#xff0c;只返回部分信息。 login_required def article_list(request):article…