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

相关推荐
C_心欲无痕3 小时前
前端实现水印的两种方式:SVG 与 Canvas
前端·安全·水印
尾善爱看海6 小时前
不常用的浏览器 API —— Web Speech
前端
美酒没故事°6 小时前
vue3拖拽+粘贴的综合上传器
前端·javascript·typescript
一三检测冯野180212918136 小时前
贴合NMPA注册 GB/T5398-2016助力医药包装运输安全
安全·模拟运输测试·包装运输测试·包装振动测试·环境试验·包装跌落测试
jingling5558 小时前
css进阶 | 实现罐子中的水流搅拌效果
前端·css
悟能不能悟9 小时前
前端上载文件时,上载多个文件,但是一个一个调用接口,怎么实现
前端
可问春风_ren9 小时前
前端文件上传详细解析
前端·ecmascript·reactjs·js
羊小猪~~10 小时前
【QT】--文件操作
前端·数据库·c++·后端·qt·qt6.3
晚风资源组11 小时前
CSS文字和图片在容器内垂直居中的简单方法
前端·css·css3
Miketutu12 小时前
Flutter学习 - 组件通信与网络请求Dio
开发语言·前端·javascript