应用软件安全编程--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 属性。

相关推荐
MXN_小南学前端8 分钟前
Vue 视频上传实战:视频预览、MediaRecorder 压缩与自定义上传
前端·vue.js
数字供应链安全产品选型9 分钟前
AI原生安全不是“概念”是“刚需”:悬镜安全如何用灵境AIDR定义智能体安全新标准?
安全·ai-native
Hilaku20 分钟前
AI 生成的代码都是一坨屎?聊聊怎么给 Agent 制定工程约束
前端·javascript·ai编程
光路科技23 分钟前
802.1X在工业以太网中的实践:不仅是认证,更是安全体系
网络·安全
吴声子夜歌26 分钟前
Vue3——使用Vue Router实现路由
前端·javascript·vue.js·vue-router
Fate_I_C36 分钟前
空安全与类型系统
安全·kotlin
whinc37 分钟前
Node.js技术周刊 2026年第16周
前端·javascript
DyLatte40 分钟前
我做了个AI项目后才发现:会做事的人,正在输给会讲故事的人
前端·后端·程序员
深海鱼在掘金40 分钟前
从Claude Code泄露源码看工程架构:第三章 — CLI 启动链路的分流策略与按需加载机制
前端·人工智能·设计模式
踩着两条虫40 分钟前
VTJ:低代码平台原理
前端·低代码·ai编程