摘要近年来,随着基于OAuth 2.0协议的身份联合与授权机制在企业级应用中的广泛部署,攻击者逐步将目标从传统凭证窃取转向对授权流程本身的滥用。...向令牌端点换取访问令牌与刷新令牌;Client使用访问令牌调用受保护资源(如Microsoft Graph API)。...获得令牌后,攻击者通过Microsoft Graph API执行侦察:import requeststoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"headers.../v1.0/me/mailFolders/{inbox_id}/messages", headers=headers).json()通过分析邮件内容,攻击者可识别财务、HR等高价值目标,进而发起针对性钓鱼或数据窃取...以下Python脚本利用Microsoft Graph API实现自动化审计:import requestsfrom datetime import datetime, timedeltadef audit_shadow_apps
它使用适当的日期过滤器构造端点 URL 以获取一天的数据,并发送 GET 请求以检索航班数据。该函数处理 API 响应并提取相关的航班信息。...我们将定义一个名为 tools 的列表,其中包含指定函数 get_flight_status 的字典。此函数旨在用作 OpenAI API 上下文中的工具,描述其参数和必需的输入。...时,GPT-4o 确定需要调用工具列表中提供的函数,并返回以下响应: 注意响应包括函数 (get_flight_status) 和参数 (EK226)。...下一步检查是否调用了任何工具(即工具中的函数)。它使用提供的参数执行这些函数,将其输出整合到对话中,并将此更新的信息发回 OpenAI API 以供进一步处理。...以下屏幕截图显示了包含所有元素的列表。 将工具的响应附加到历史记录后,我们可以调用聊天完成端点来从 LLM 获取最终答案。
如果我们发现这样的API调用,那么尝试遍历有效负载并发送其他数据(实际上是在用户输入中接收)可能会更有帮助。 Sam仔细留意这个App,发现了更多的API调用。...幸运的是,sam尝试的第一个测试返回了一个非常好的指标,表明可以遍历端点: GET /bff/proxy/stream/v1/users/me/streamItems/..\ HTTP/1.1Host:...这意味着内部API的根是6个返回路径,可以使用目录暴力破解工具或Burp Suite的入侵者和单词列表将其映射出来。 此时,sam对这个漏洞更加感兴趣了,他和Justin Gardner进行了探讨。...,sam开始逐一研究每个目录。...随后,sam开始进一步探索该服务,以使用Microsoft Graph功能进行确认。
,如果不配置则不启用,启用后所有邮件都会转发到列表中的地址 # FORWARD_ADDRESS_LIST = ["xxx@xxx.com"] # D1 数据库的名称和 ID 可以在 cloudflare...需要注意,我们的域名需要有一个初始邮箱,如果没有,请点击域名,电子邮件,电子邮件路由,点击开始使用,并且继续: 然后配置路由规则,选择Catch-all地址选项,将所有邮箱的内容全部转发到worker:...下面我们开始获取所需要的前端文件,点击以下地址下载源码文件: 引用站外地址,不保证站点的可用性和安全性 点击下载文件:frontend.zip 点击立即下载前端源码文件 然后打开以下文件,搜索https...项目部署 其实部署起来非常简单,因为项目是分为前后端的,所以我们需要分别配置前后端: 添加环境变量CF_API_TOKEN 修改wrangler.toml文件中的内容,主要修改两个KV的ID和账户ID,...在尝试和试错的过程中,我花费了不少时间,为的就是将这些优秀的项目呈现给大家。我已经将它们全部部署好了,大家可以轻松访问并亲自体验。希望你们能喜欢!
LangChain 简化了 LLM 应用程序生命周期的每个阶段:开发:使用LangChain的开源构建块和组件构建应用程序。使用第三方集成和模板开始运行。...生产化:使用 LangSmith 检查、监控和评估您的链条,以便您可以自信地持续优化和部署。部署:使用 LangServe 将任何链转换为 API。...Base LLMLangChain中的llm指的是纯文本补全模型(text completion)。它们包装的api接受字符串提示符作为输入,输出字符串补全。...a {adjective} joke about {content}."}2-1-6、例子选择器主要内容:自定义示例选择器,以及采用不同算法来根据示例与输入之间的相似度、多样性来选择示例。...,其中包含文本和变量占位符;input_variables: 列表,指定了模板中可以使用的变量名称,在调用模板时被替换;partial_variables:字典,用于定义模板中一些固定的变量名。
此类攻击不依赖凭据窃取,而是滥用OAuth 2.0授权框架中的“用户同意”流程,使恶意应用获得长期有效的刷新令牌(refresh token),进而通过Microsoft Graph API静默读取邮件...);用户点击“接受”,微软返回授权码;应用用授权码向令牌端点兑换访问令牌与刷新令牌;应用使用令牌调用Microsoft Graph API。...://graph.microsoft.com/v1.0/me/messages?.../v1.0/me/mailFolders/inbox/messageRules',json=rule_payload,headers=headers)此类操作完全通过合法API完成,日志中仅显示“应用ID...3.3 缺乏应用行为基线监控SIEM系统通常未将“新应用首次访问Graph API”与“大量邮件读取”关联分析。即使启用日志,也因数据量庞大而忽略异常。3.4 审计滞后企业极少定期审查已授权应用列表。
图由节点(node)和边(edge)组成,节点表示智能体,边表示智能体之间的关系。在 graph 目录下定义了两个文件:graph.py 和 graph_state.py。...messages: Annotated[list, add_messages] # 消息列表,使用add_messages注解处理消息追加 documents: Optional[list...] = [] # 文档列表,默认为空列表 定义节点方法 在 graph.py 文件中,定义了多个方法,表示图的结构和行为,用于处理不同类型的请求。...: # 将生成的搜索查询添加到消息列表中,下一个节点将会使用 state["messages"] = query elif state["type"] == "file...在 LangGraph 中,图的边分为普通边和条件边。
这种方式在很多编辑类任务中效果不错。 Reflexion Agent更加结构化,会在可追踪的日志中记录历史行为、假设和反思内容。特别适合那些需要从多次失败中汲取经验的问题求解场景。...{"messages": [HumanMessage(content=strategy_feedback.content)]} 定义好两个图节点后,创建决定工作流继续还是结束的条件逻辑: def should_continue_refining...首先定义图状态和循环控制函数: # Graph state definition class State(TypedDict): messages: Annotated[list, add_messages...将发现整合到综合性、带引用的回答中 重复过程直到解释达到质量标准 两种模式的选择策略 我们已经实现了两种模式,现在可以看看它们各自的适用场景: 选择Reflection的情况:内容偏向创意或风格性时;现有内部知识已经足够...选择Reflexion的情况:准确性和事实正确性至关重要;内容需要最新或专业信息;必须提供引用和参考来源;质量比速度更重要;关键决策因素在于任务是否需要外部知识获取;如果主要目标是优化现有知识,选Reflection
2.2 LangGraph核心要素(State、Edge、Node) 1、State(状态) 在LangGraph中,State是一个贯穿整个工作流执行过程中的共享数据的结构,代表当前快照,它存储了从工作流开始到结束的所有必要的信息...) 特殊节点: 在LangGraph中有两个特殊的节点 __START__ (开始节点)和 __END__(结束节点) __START__节点:开始节点,确定应该首先调用哪些节点。...(消息列表合并) LangGraph提供的专用Reducer函数,能智能的合并消息列表,不只是简单的追加,add_messages能够保证消息列表正确被累计,常用在多轮对话系统中,主要逻辑包括: 追加新消息...:如果新消息的 ID 不在现有列表中,则将其追加到列表末尾。...LangGraph除了Python版本还提供了JS和JAVA版本,实际开发中可以根据具体的应用场景选择合适的语言。
环境准备 在autodl平台中租一个**双卡3090等24G(共计48G)**显存的显卡机器,如下图所示镜像选择PyTorch–>2.1.0–>3.10(ubuntu22.04)–>12.1 接下来打开刚刚租用服务器的...JupyterLab, 图像 并且打开其中的终端开始环境配置、模型下载和运行演示。...CUDA缓存 torch.cuda.ipc_collect() # 收集CUDA内存碎片 # 创建FastAPI应用 app = FastAPI() # 处理POST请求的端点...max_length = json_post_list.get('max_length') # 获取请求中的最大长度 # 构建 messages messages...(app, host='0.0.0.0', port=6006, workers=1) # 在指定端口和主机上启动应用 Api 部署 在终端输入以下命令启动api服务 cd /root/autodl-tmp
多智能体架构 这里将从一个简单的 ReAct 智能体开始,并在工作流中添加额外的步骤,模拟一个逼真的客户支持示例,展示人工介入、长期记忆和 LangGraph 预构建库。...对于我们的客户支持智能体,状态包括: customer_id: 识别客户以进行个性化响应和数据检索。 messages: 对话中交换的所有消息的列表,为智能体提供上下文。...它只是返回此 LLM 响应,add_messages(来自状态定义)会自动将其附加到状态中的 messages 列表中。...此函数检查对话中的最后一条消息,以决定智能体是应继续执行工具还是结束对话。...show_graph(multi_agent_verify_graph) 新的图结构从verify_info开始执行。
现代人工智能应用程序通常需要对不同的语言模型和专门的服务器进行复杂的编排,每个服务器在更大的工作流中处理特定的任务。然而,这种分布式方法引入了一个关键的挑战: 保持上下文的连续性。...MCP 的核心 模型上下文协议(Model Context Protocol, MCP)为在分布式人工智能系统中各组件之间一致地保存和高效传输丰富的上下文信息,提供了一个标准化的框架。...这种结构化的容器使得上下文具备良好的可读性和可操作性,能够准确反映交互过程中的状态与意图。 MCP 提供了一套规范的序列化标准,确保上下文能够在不同的系统、服务或 Agent 之间高效、可靠地传输。...由于上下文容器可能包含用户的敏感信息,如对话历史、个人偏好或业务数据,因此必须采取全面的安全措施来保障系统的可靠性和用户隐私。 在数据保护方面,应确保上下文数据在存储和传输过程中始终处于加密状态。...通过在数据保护、访问控制和输入过滤等方面构建多层次的安全防护体系,可以有效提升 MCP 在实际应用中的安全性,为其在复杂、高要求的生产环境中的部署提供坚实保障。
可选 验证码 API 服务器 RECAPTCHA_PARAMETERS 可选 一个 JavaScript(api.js)参数的字典 RECAPTCHA_DATA_ATTRS 可选 一个数据属性项列表...就让我们来定义用户登录表单来做一个开始吧,它会要求用户输入username和password,并提供一个“remember me”的复选框和提交按钮: from flask_wtf import FlaskForm...get_flashed_messages()是Flask中的一个函数,它返回用flash()注册过的消息列表。...闪现消息的一个有趣的属性是,一旦通过get_flashed_messages函数请求了一次,它们就会从消息列表中移除,所以在调用flash()函数后它们只会出现一次。...生成链接 现在的登录表单已经相当完整了,但在结束本章之前,我想讨论在模板和重定向中包含链接的妥当方法。 到目前为止,你已经看到了一些定义链接的例子。
前言 1.GraphQL的概念 GraphQL是一种用于API的查询语言和运行时环境。它是由Facebook于2012年开始内部使用,2015年对外宣布开源。...GraphQL是一种强大而灵活的API开发工具,通过其独特的查询语言和运行时环境,可以大大提高API的可用性和灵活性,是API开发的一种重要的选择。...RESTful API的响应是基于请求中的URI和动词的,不能跨越这些边界。 GraphQL使用单个端点来获取和修改数据,使用查询语言来指定所需的数据。...RESTful API和GraphQL各有优劣。选择哪种API取决于项目的需求。...如果需要简单和可靠的API,RESTful API是一个不错的选择;如果需要快速、灵活、精确的数据获取方式,GraphQL则是一个更好的选择。
它是围绕 Python 客户端库的一个轻量级包装,允许创作者在不更改代码的情况下无缝切换和测试来自不同 LLM 提供商的响应。目前,这个库主要专注于聊天补全功能,未来将扩展以涵盖更多用例。...English."}, {"role": "user", "content": "Tell me a joke."}, ] for model in models: response...要获取提供商值列表,可以查看目录“aisuite/providers/” 当前支持的提供商包括 OpenAI、Anthropic、Azure、Google、AWS、Groq、Mistral、HuggingFace...为了最大限度地提高稳定性,aisuite 使用 HTTP 端点或 SDK 来调用提供商的服务。...说点别的 其实市面上早就大模型中间代理商,提供的也有统一的 api 调用方式,可以直接使用 N 多不同厂商的大模型。
CherryStudio的高度自定义的设计、强大的扩展能力和友好的用户体验,使其成为专业用户和 AI 爱好者的理想选择。...点击左下角的小齿轮打开设置 在模型列表中选择ollama 点击右上角开关打开ollama API密钥空着不要填,API地址使用本地地址 点击管理,选择我们之前已经下载的deepseek r1模型 设置完成后点击左上角的聊天图标...,在对话中选择创建的知识库: 验证一下效果(效果并不理想): 话外音 感觉deepseek又开始一本正经的胡说八道了,这可能和我们选择的模型有关,我们当前使用的是1.5b的模型,如果你的硬件允许...在内容生成API中,我们仅传入了prompt,大模型仅对我们本地的prompt进行回答,而在生成对话API中,我们还可以传入messages参数,包含我们多轮对话内容,使大模型具备记忆功能。..., tool) messages.content 是 消息内容 messages.images 否 消息中Base64编码的图片列表(适用于多模态模型如llava) messages.tool_calls
client_id 是最开始申请的APPID,redirect_uri是申请网站填写的网站回调域。...请求地址为https://graph.qq.com/oauth2.0/me,方法还是GET,参数就是上面获取到的access_token。...具体方法为: def get_openid(data): data为token得到的数据包 url = 'https://graph.qq.com/oauth2.0/me' body...图4 API列表 接下来以get_user_info 为例: 还是以GET方式请求: https://graph.qq.com/user/get_user_info, 需要的参数有access_token...接着就是根据自己的需要,可以在user界面展示昵称和头像,和选择存进数据库了。选择将open_id作为用户的唯一标识符存进数据库,这样用户在后面登录的时候可以得到上次保存的信息。
它允许你通过 API 发起由 AI 代理拨打的电话,或直接接听来自配置号码的来电。该项目旨在帮助开发者在几小时内(而非几周)为保险、IT支持、客户服务等场景定制和部署智能语音助手。...动态工单收集:可在通话开始前动态定义需要收集的信息(如文本、日期时间等),AI助手会在对话中自然地引导客户提供,并结构化输出。...高度可扩展的工具调用:内置插件系统,允许AI助手在对话中执行特定操作,如结束通话、创建新工单、转接人工坐席等,并可轻松扩展自定义工具。...等的连接信息和密钥或者,你也可以将所有配置放入名为 CONFIG_JSON 的环境变量中(JSON格式)。...呼叫入口与事件处理 (app/main.py - 片段)这是FastAPI应用的入口,定义了接收来电和事件回调的核心端点。
它是在一个包含2万亿个英文和中文代币的庞大数据集上从零开始训练的。...环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8(11.3版本以上的都可以) 接下来打开刚刚租用服务器的...JupyterLab, 图像 并且打开其中的终端开始环境配置、模型下载和运行演示。...max_length = json_post_list.get('max_length') # 获取请求中的最大长度 # 构建 messages messages...,从而在本地使用api uvicorn.run(app, host='0.0.0.0', port=6006, workers=1) # 在指定端口和主机上启动应用 Api 部署 在终端输入以下命令启动
该机制极大提升了用户体验,但也引入了新的攻击面:若用户被诱导授权一个恶意应用,攻击者即可绕过所有基于密码和MFA的验证环节,直接通过合法API接口操作账户。...Graph API。...3.4 数据窃取与横向移动获得令牌后,攻击者可调用Microsoft Graph API执行以下操作:# 读取最新100封邮件Invoke-RestMethod -Uri "https://graph.microsoft.com.../v1.0/me/messages?...4 企业安全配置中的薄弱环节尽管微软提供多项安全控制,但实际部署中普遍存在以下问题:4.1 第三方应用授权策略宽松默认情况下,Microsoft Entra ID允许所有用户注册和授权第三方应用。