漏洞关键信息 漏洞类型 类型: 存储型跨站脚本(XSS) - 需要身份验证 漏洞位置 受影响的页面: - 添加新成绩/备注和最近成绩显示 漏洞细节 影响的参数: (POST) 漏洞描述: 当创建成绩时提交的 字段存储在数据库中,并在稍后呈现到页面时没有进行适当的HTML编码,导致经过身份验证的用户可以存储和触发JavaScript执行,影响其他用户(或同一用户在页面重新加载时)。 复现步骤 1. 使用有效凭证(教师账户)登录应用程序。 2. 导航至“成绩” → “添加新成绩”(页面 )。 3. 填写必填字段(学生、科目、教室、成绩类型、成绩)。在 字段中,输入JavaScript负载( )。 4. 提交后,查看“最近成绩”表或重新加载 。弹出警告框。 根因 用户提供的 存储在数据库中,并在稍后呈现到HTML页面时没有进行适当的输出编码或清理,即使INSERT使用的是防止SQL注入的PDO预准备语句,应用仍会将生 回显到页面上,允许存储的JavaScript在用户浏览器中执行(存储XSS)。 影响 攻击者可以注入并在数据库中存储恶意JavaScript代码(存储XSS)。当其他用户或管理员查看受影响页面时,注入的脚本在他们的浏览器中以与合法用户相同的权限执行。这可能导致Session劫持、凭证盗窃、应用程序的污损、未经授权代表用户的操作,以及通过应用程序界面潜在地传播恶意软件。 缓解措施 输出编码: 在呈现之前,始终使用函数(如PHP中的 )对动态输出进行清理和编码。 输入验证: 验证和限制输入字段(如 )以符合预期的格式(例如,只允许字母数字和基本标点),在存储到数据库之前对用户输入进行清理。