防止 XSS 攻击 解决方案
XSS又叫CSS英文缩写为Cross Site Script
中文意思为跨站脚本攻击
具体内容指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,
嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的.
解决方案
第一。过滤
过滤 标签 等字符 ,但是这样 对用户是不公平的。
第二。用asii 码替换
如 < > ! 等
第三 。 用 element.innerText 显示用户数据
这样要写大量的 js
第四。 使用 <xmp>
<xmp>标签不解析内部的html元素,而且不执行内部的javascript脚本代码
但是要防止攻击代码在数据中间插入</xmp>从而绕过保护
第五。通过 frame 来防止 数据页面攻击 主页面
使用 document.domain 属性 来控制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>测试iframe的单向访问</title>
<style>
body
{
font-size:12px;
}
</style>
</head>
<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>
<body>
为了避免XSS跨站攻击,在大多数html编辑器的设计中,都是要将用户输入的HTML内容进行过滤。过滤代码繁琐暂且不说,关键是不能保证考虑到所有已知和未知的攻击类型。
<br />
如果我们能设计一个iframe的单向访问模型,就可以让用户输入的HTML内容在受控的环境中执行,也就不需要再进行过滤了。
<br />
举例来说,我们html编辑器所在的主页面为a,嵌入一个iframe为b。a可以访问b的内容,而b却不能访问a的内容。这样的话,b中的HTML内容即使包含攻击代码,也无法发挥作用了。
<br />
<br />
<table>
<tr>
<td width="300px;" valign="top">
<iframe src="http://bb.pimshell.com/pimshell/test/b.htm" id="frame1" onload="frame1_onload();"></iframe>
<br />
<br />
<button id="button1" onclick="changebackcolor();" disabled>--> 改变IFrame的背景颜色</button>
</td>
<td valign="top">
iframe中的代码:
<br />
<pre style="background-color:whitesmoke; border:dashed 1px black; padding:4px;">
<script language="javascript">
//domain
document.domain="pimshell.com";
//访问主页面试试看
function geta()
{
alert(parent.document.body.innerHTML);
}
</script>
</pre>
<br />
主页面中的代码:
<br />
<pre style="background-color:whitesmoke; border:dashed 1px black; padding:4px;">
<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>
</pre>
</td>
</tr></table>
</table>
</div>
</body>
</html>
防止 XSS 攻击 解决方案的更多相关文章
- XSS攻击&CSRF攻击 ----Django解决方案
XSS攻击: XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执 ...
- 360[警告]跨站脚本攻击漏洞/java web利用Filter防止XSS/Spring MVC防止XSS攻击
就以这张图片作为开篇和问题引入吧 <options>问题解决办法请参考上一篇 如何获取360站长邀请码,360网站安全站长邀请码 首先360能够提供一个这样平台去检测还是不错的.但是当体检 ...
- 来自内部的XSS攻击的防范
来自内部的XSS攻击的防范 引入:前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击. 实践:其实从 http://www.2cto ...
- validateRequest="false"属性及xss攻击
validateRequest="false" 指是否要IIS验证页面提交的非法字符,比如:>,<号等,当我们需要将一定格式得html代码获得,插入数据库时候,就要 ...
- XSS研究2-来自内部的XSS攻击的防范
引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击. 实践: http://www.cnblogs.com/crazy ...
- 游戏行业DDoS攻击解决方案
行业综述 根据全球游戏和全球移动互联网行业第三方分析机构Newzoo的数据显示:2017年上半年,中国以275亿美元的游戏市场收入超过美国和日本,成为全球榜首. 游戏行业的快速发展.高额的攻击利润.日 ...
- .net core xss攻击防御
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意 ...
- xss攻击问题以及如何防范
当用户提交评论的时候,比如如下评论内容 111 <scripy>alert(111);</scripy> 这样当现实评论的时候会先弹出111弹框,再显示评论.这就是xss攻击. ...
- 阿里云:游戏行业DDoS攻击解决方案
转自:http://www.gamelook.com.cn/2018/01/319420 根据全球游戏和全球移动互联网行业第三方分析机构Newzoo的数据显示:2017年上半年,中国以275亿美元的游 ...
随机推荐
- android 添加左右滑屏手势
今天要在自己的项目中添加左右滑动,实现日期的加减(原来已经做了加减按键).滑动在一个中间的layout中进行 思路:添加左右划屏幕判断,得到判断后模拟加减按键按下. 模拟按键按下用 mbotton.p ...
- poj1651 最优矩阵乘法动态规划解题
题目描述: 有若干个矩阵{Ai},元素都为整数且已知矩阵大小. 如果要计算所有矩阵的乘积A1 * A2 * A3 .. Am,最少要多少次整数乘法? 输入 第一行一个整数n(n <= 100), ...
- poj2578---三个数中找出第一个大于168的
#include <stdio.h> #include <stdlib.h> int main() { int a,b,c; scanf("%d %d %d" ...
- Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网
Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网 Trunk Club:颠覆男士时装零售的创业公司
- JS 之 offsetWidth\offsetleft
- I Hate It(线段树)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
游戏动画基础 Animation组件 Animation组件是对于老的动画系统来说的. 老的动画形同相应的动画就是clip,每一个运动都是一段单独的动画,使用Play()或CrossFade(),直接 ...
- Oracle基础(二)---操作命令
接上篇博客介绍Oracle基本概要.以下将介绍数据库的操作指令. Sql*plus经常使用命令 连接命令 1. conn[ect] 使用方法 connusername/password@网路服务名[a ...
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...
- powerdesigner反向MySQL5.1数据库 生成ER图
我用的powerdesigner是15.1版本,数据库是MySQL5.1.57 (1)首先新建一个“PhysicalDataModel”类型的文件,然后点击“Database”->"C ...