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

相关推荐
花归去11 小时前
echarts 柱状图曲线图
开发语言·前端·javascript
喝拿铁写前端11 小时前
当 AI 会写代码之后,我们应该怎么“管”它?
前端·人工智能
xixixi7777711 小时前
量子通信是当前信息安全和通信领域最前沿、最具变革性的技术之一
安全·信息安全·量子计算·通信·量子通信·密钥·传输
老前端的功夫11 小时前
TypeScript 类型魔术:模板字面量类型的深层解密与工程实践
前端·javascript·ubuntu·架构·typescript·前端框架
WLJT12312312312 小时前
守护自然与滋养民生的绿色之路
大数据·安全
Nan_Shu_61412 小时前
学习: Threejs (2)
前端·javascript·学习
G_G#12 小时前
纯前端js插件实现同一浏览器控制只允许打开一个标签,处理session变更问题
前端·javascript·浏览器标签页通信·只允许一个标签页
C++ 老炮儿的技术栈12 小时前
什么是通信规约
开发语言·数据结构·c++·windows·算法·安全·链表
@大迁世界12 小时前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
GIS之路12 小时前
GDAL 实现矢量裁剪
前端·python·信息可视化