应用软件安全编程--16预防反射型 XSS

应用程序通过 Web 请求获取不可信赖的数据,在未检验数据是否存在恶意代码的情况下,便将其传 送 给 了Web用户,应用程序将易于受到反射型XSS攻击 。

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

示例:下面JSP代码片段的功能是从 HTTP 请求中读取雇员的ID(eid),并将其显示给用户。

<% String name= request.getParameter("username");%>

姓名:<%= name%>

如果 name 里有包含恶意代码,那么 Web 浏览器就会像显示 HTTP 响应那样执行该代码,应用程序将受到反射型 XSS 攻击。

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

a)对用户的输入进行合理验证(如年龄只能是数字),对特殊字符(如〈、〉、、"以及<script〉、javas- cript 等)进行过滤。

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

例如:采用 OWASP ESAPI对数据输出 HTML 上下文中不同位置,编码方法如下。

//HTML encode

ESAPL.encoder(),encodeForHTML("inputData");

//HTML attribute encode

ESAPL.encoder().encodeForHTMLAttribute("inputData");

//JavaScript encode

ESAPI.encoder(),encodeForJavaScript("inputData");

//CSS encode

ESAPLencoder().encodeForCSS("inputData");

//URL encode

ESAPI,encoder(),encodeForURL("inputData");

c)设置 HttpOnly 属性,避免攻击者利用跨站脚本漏洞进行Cookie劫持攻击。在Java EE中,给Cookie 添加 HttpOnly 的代码如下:

response

response.setHeader("Set-Cookie"," cookiename = cookievalue; path=/; Domain = domainvaule; Max- age = seconds; HttpOnly");

.setHeader("Set-Cookie"," cookiename = cookievalue; path=/; Domain = domainvaule; Max- age = seconds; HttpOnly");

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的老人吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值