应用软件安全编程--18预防存储型 XSS

应用程序从数据库或其他后端数据存储获取不可信赖的数据,在未检验数据是否存在恶意代码的 情况下,便将其传送给了 Web 用户,应用程序将易于受到存储型 XSS 攻击。

对于预防存储型 XSS 的情况,示例给出了不规范用法(Java 语言)示例。

java 复制代码
示例:

<%   .

Statement     stmt     =     conn.createStatement();

ResultSetrs = stmt.executeQuery("select * from users where id ="+ id);

String address = null;

if   (rs!=    null){

rs.next();

address = rs.getString("address");

 

%>

家庭地址:<%= address %〉

上面 JSP 代码片段的功能是根据一个已知雇员ID(eid)从数据库中查询出该雇员的姓名,并显示 在JSP 页面上。

如果 name 的值是由用户提供的,且存入数据库时没有进行合理的校验,那么攻击者就可以利用上 面的代码进行存储型 XSS 攻击。

为了避免存储型XSS 攻击,建议采用以下方式进行防御:

a) 与预防反射型 XSS 相同,对用户的输入进行合理验证(如年龄只能是数字),对特殊字符(如 〈、〉、"以及<script〉、javascript等)进行过滤。

b) 与预防反射型 XSS 相同,根据数据将要置于 HTML上下文中的不同位置(HTML 标签、HTML属性、JavaScript脚本、CSS、URL),对所有不可信数据进行恰当的输出编码。

c) 与预防反射型 XSS 相同,设置 HttpOnly 属性。

相关推荐
kiracrimson17 分钟前
npm 入门:包管理器、依赖与 npx
前端·npm·node.js
桌管小李18 分钟前
内网终端安全再升级|迪康端点安全 2609 版本四大新功能解读
大数据·windows·安全·macos·网络安全
白帽攻防录20 分钟前
SRC 挖洞:Outlook 五个预览窗格 RCE,零点击怎么打穿企业邮箱
安全·web安全·网络安全·outlook·邮件安全
ShineWinsu24 分钟前
对于JavaScript:初识JavaScript以及输入输出
java·开发语言·前端·javascript·css·面试·html
鲤鱼_59925 分钟前
教培机构一体化运营管理系统操作手册
前端
鶴哥只手遮天31 分钟前
React 19.3.1 源码深度剖析-第 3 章 Fiber 架构与双缓冲
前端·react.js·开源
鶴哥只手遮天33 分钟前
React 19.3.1 源码深度剖析-第 9 章(下)lazy、retry、hydration 与实战
前端·react.js·开源
鶴哥只手遮天33 分钟前
React 19.3.1 源码深度剖析-第 6 章 React DOM 渲染器与 Commit 阶段(把 Fiber 副作用落到真实 DOM)(上)
前端·react.js·开源
jimmyleeee34 分钟前
大模型安全之四十七:当AI拥有行动权——智能体系统开发与安全防御指南
人工智能·安全
鶴哥只手遮天36 分钟前
React 19.3.1 源码深度剖析-第 6 章 React DOM 渲染器与 Commit 阶段(把 Fiber 副作用落到真实 DOM)(下)
前端·react.js·开源