xss攻击解决方案java_防止 XSS 攻击 解决方案(转载)

XSS又叫CSS英文缩写为Cross Site Script

中文意思为跨站脚本攻击

具体内容指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,

嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的.

解决方案

第一。过滤

过滤 标签 等字符 ,但是这样 对用户是不公平的。

第二。用asii 码替换

如   ! 等

第三 。 用 element.innerText 显示用户数据

这样要写大量的 js

第四。 使用

标签不解析内部的html元素,而且不执行内部的javascript脚本代码

但是要防止攻击代码在数据中间插入

从而绕过保护

第五。通过 frame 来防止 数据页面攻击 主页面

使用 document.domain 属性 来控制

测试iframe的单向访问

body

{

font-size:12px;

}

//frame1的document

var oDocument=null;

//响应frame1的onload事件

function frame1_onload()

{

//旧的domain

var sDomainOld=document.domain;

//降级domain

document.domain="pimshell.com";

//保存frame1的document

oDocument=frame1.document;

//恢复domain

document.domain=sDomainOld;

//准备就绪

button1.disabled=false;

}

//改变IFrame的背景颜色

function changebackcolor()

{

if(oDocument.body.style.backgroundColor=="")

oDocument.body.style.backgroundColor="blue";

else

oDocument.body.style.backgroundColor="";

}

为了避免XSS跨站攻击,在大多数html编辑器的设计中,都是要将用户输入的HTML内容进行过滤。过滤代码繁琐暂且不说,关键是不能保证考虑到所有已知和未知的攻击类型。

如果我们能设计一个iframe的单向访问模型,就可以让用户输入的HTML内容在受控的环境中执行,也就不需要再进行过滤了。

举例来说,我们html编辑器所在的主页面为a,嵌入一个iframe为b。a可以访问b的内容,而b却不能访问a的内容。这样的话,b中的HTML内容即使包含攻击代码,也无法发挥作用了。

--> 改变IFrame的背景颜色

iframe中的代码:

<script language="javascript">

//domain

document.domain="pimshell.com";

//访问主页面试试看

function geta()

{

alert(parent.document.body.innerHTML);

}

</script>

主页面中的代码:

<script language="javascript">

//frame1的document

var oDocument=null;

//响应frame1的onload事件

function frame1_onload()

{

//旧的domain

var sDomainOld=document.domain;

//降级domain

document.domain="pimshell.com";

//保存frame1的document

oDocument=frame1.document;

//恢复domain

document.domain=sDomainOld;

//准备就绪

button1.disabled=false;

}

//改变IFrame的背景颜色

function changebackcolor()

{

if(oDocument.body.style.backgroundColor=="")

oDocument.body.style.backgroundColor="blue";

else

oDocument.body.style.backgroundColor="";

}

</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请注意,我是一名语言模型AI,无法编写代码。不过,以下是一些建议来防止XSS攻击Java代码: 1. 使用HTML转义字符 在Java代码中使用特殊字符(如<、>、&、'和")时,需要使用HTML转义字符。以下代码展示了如何使用转义字符来防止XSS攻击: String input = "<script>alert('Hello World');</script>"; String safeInput = StringEscapeUtils.escapeHtml(input); System.out.println("Safe input: " + safeInput); 输出:Safe input: <script>alert('Hello World');</script> 2. 使用JSoup库 JSoup是一个Java库,能够帮助你从HTML中提取数据并且过滤不安全的HTML标签。以下是使用JSoup来防止XSS攻击Java代码: String input = "<script>alert('Hello World');</script><p>This is safe.</p>"; String safeInput = Jsoup.clean(input, Whitelist.basic()); System.out.println("Safe input: " + safeInput); 输出:Safe input: <p>This is safe.</p> 3. 使用Content Security Policy Content Security Policy(CSP)是一个安全协议,能够允许你指定哪些源网址可以在你的网页中被加载。以下是使用CSP来防止XSS攻击Java代码: response.setHeader("Content-Security-Policy", "default-src 'self'"); response.getWriter().println("<p>This is safe.</p><script>alert('Hello World');</script>"); 这个代码片段指定只有来自同一源网址的资源可以被加载。所有其他资源(例如CDN内容或第三方库)都将被阻止。 以上是一些防止XSS攻击Java代码建议,但它们并不是绝对的解决方案。要确保你的应用程序安全,你应该扎实地了解应用程序安全知识并且积极采取措施来缓解威胁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值