‘壹’ 跨站脚本攻击xss的原理是什么有什么危害如何防范
xxs攻击原理是网页对用户输入的字符串过滤不严,导致在提交输入信息的时候浏览器执行了黑客嵌入的xxs脚本,致使用户信息泄露。黑客可将伪装过的含义脚本语句的链接发送给受害者,当受害者点击链接的时候,由于网页没有过滤脚本语句,所以浏览器执行了脚本语句,而这个脚本语句的作用是将用户的cookie发送到黑客指定的地址,然后黑客就可以利用受害者的cookie窃取受害者的个人信息等等。这种攻击对服务器没有多大危害,但对用户危害很大,要防范这种攻击应该在设计网站的时候对用户提交的内容进行严格的过滤。
‘贰’ 如何解决跨站脚本攻击
test
如:<input type="text" id="txtceshi" /><input type="button" onclick="yanzheng()" value="ceshi" />
<script type="text/javascript">
function yanzheng() {
var ce = txtceshi.value;//获取文本框的值
var ze = /[^0-9]+/; //只能是数字,这里可以在网上找到一些正则替换成你想要的表达式
if (ze.test(ce)) {
alert("数据不合法!");
}
}
</script>
‘叁’ XSS跨站脚本攻击的防御方法有哪些怎样把他们分类
用护卫神高级安全防护可以解决
‘肆’ 跨站脚本攻击xss和css的区别
传统防御技术传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击
‘伍’ Internet Explorer 已对此页面进行了修改,帮主阻止跨站脚本。 用了360还是那样
这个错误是由于
IE8
的跨站脚本(Cross-site
scripting,
XSS)防护阻止了跨站发送的请求。
点击
IE8
的“工具”-“Internet
选项”,进入“安全”选项卡,打开“Internet”下方的“自定义级别”,在“安全设置”对话框中找到“启用
XSS
筛选器”,改为“禁用”即可。
下面参考资料里有详细设置
‘陆’ 什么是同源策略如何解决跨域
此时,客户端会出现跨域问题,同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性、协议和端口号的组合.
跨域问题是由于javascript语言安全限制中的同源策略造成的.
简单来说,这里的同一来源指的是主机名1.什么是跨域
经常会在页面上使用ajax请求访问其他服务器的数据
‘柒’ 为什么要同源策略
一个重要原因就是保护cookie,cookie中存着用户的登陆凭证,就相当于用户的账号密码。
想象以下场景,你正吃着火锅唱着歌,突然收到一封邮件说你的银行账号存在安全隐患,点击www.shazilai.com修复。虽然银行的官方网站是www.anquan.com,但是想到你的全部家当24块3毛都在卡里,慌乱的你没有注意这么多点击链接输入帐号密码进行登陆。这个网站其实是
<iframe src="www.anquan.com">
在你输入帐号密码的时候,如果没有同源策略,外部已经有脚本获取你的输入或者直接通过document.cookie窃取了你的信息并且发送给攻击者了。
那有了同源策略,是不是我们的网站就万无一失了呢。并不是,还有很多其他手段威胁到网站安全,比如xss,csrf,clickJacking,本篇文章就简单阐述一下他们的攻击手段和基础攻防(后续添加)。
xss
Cross Site Script,译为是跨站脚本攻击;其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而被迫改名为 XSS。主要分为反射型和储存型。
反射型
反射型的特点是不持久,它的特点是xss的代码出现在访问的链接里,作为一部分输入提交到服务器,然后服务器响应后返回浏览器,然后浏览器执行xss的代码。
一般攻击者通过邮件或者其他途径发送链接,用户点击之后达到攻击目的。
储存型
存储型和反射型的差别仅在于他的攻击代码会存储到服务器。这种攻击的最典型例子就是博客论坛的留言功能,访问包含这条留言的页面时,就会触发攻击代码。
比如某个论坛的个人中心里的个人简介,我们就可以在里面尝试注入代码进行练习,先来测试可用的标签
<script><a><p><img><body><button><var><div><iframe><meta><object><marquee><isindex ><input><select>><keygen><frameset><embed><svg><math><video><audio><textarea>
发现只有a标签存活下来,再来测试属性
<a href onmouseover onclick >
xss存在的主要原因在于没有对于用户的提交内容和接口的返回内容没有进行严格的过滤。
而防止xss的主要手段也是对输入和url参数进行过滤,对输出进行编码,还有就是cookie设置http-only。像常用的vue就有
const decodingMap = {
'<': '<',
'>': '>',
'"': '"',
'&': '&',
'
': '\n',
' ': '\t',
''': "'"
}
来对输入进行进行过滤,还有网络中输入<script>alert(1)</script>也会被转译成<script>alert(1)<%2Fscript>。
至于http-only,严格来说没有阻止攻击,只是阻止了攻击后的cookie劫持。
‘捌’ DOM 跨站脚本攻击问题,怎么解决
跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。为了与层叠样式表(Cascading Style Sheets)的缩写CSS区分开,跨站脚本攻击通常简写为XSS。
下面这个页面的主要作用是获取用户输入的参数作为用户名,并在页面中显示“欢迎您,XXX”的形式,具体代码如下:
<?php
$username = $_GET["name"];
echo "<p>欢迎您, ".$username."!</p>";
‘玖’ 跨站脚本攻击是什么意思
XSS,跨站脚本攻击,Cross-Site
Scripting,为了和前端的CSS避免重名,简称为XSS,是指通过技术手段,向正常用户请求的HTML页面中插入恶意脚本,执行。
这种攻击主要是用于信息窃取和破坏等目的。在防范XSS上,主要就是通过对用户输入的数据做过滤或者或者转义,可以使用框架提供的工具类HTML
Util,另外前端在浏览器展示数据的时候,要使用安全的API展示数据。比如使用inner text而不是inner HTML。
‘拾’ 如何防止跨站点脚本攻击
你好~
XSS漏洞产生的原因:
跨站点脚本的主要原因是程序猿对用户的信任。开发人员轻松地认为用户永远不会试图执行什么出格的事情,所以他们创建应用程序,却没有使用任何额外的代码来过滤用户输入以阻止任何恶意活动。另一个原因是,这种攻击有许多变体,用制造出一种行之有效的XSS过滤器是一件比较困难的事情。
但是这只是相对的,对用户输入数据的”编码”和”过滤”在任何时候都是很重要的,我们必须采取一些针对性的手段对其进行防御。
如何创造一个良好的XSS过滤器来阻止大多数XSS攻击代码
1 .需要重点”编码”和”过滤”的对象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防御XSS有一个原则:
以当前的应用系统为中心,所有的进入应用系统的数据都看成是输入数据(包括从FORM表单或者从数据库获取到的数据),所有从当前应用系统流出的数据都看作是输出(包括输出到用户浏览器或向数据库写入数据)
对输入的数据进行”过滤”,对输出数据进行”编码”。这里的”编码”也要注意,必须针对数据具体的上下文语境进行针对性的编码。例如数据是输出到HTML中的那就要进行HtmlEncode,如果数据是输出到javascript代码中进行拼接的,那就要进行javascriptEncode。
如果不搞清楚数据具体输出的语境,就有可能因为HtmlParser()和javascriptParser()两种解析引擎的执行先后问题导致看似严密的”编码”形同虚设。
2. HtmlEncode HTML编码
它的作用是将字符转换成HTMLEntities,对应的标准是ISO-8859-1
为了对抗XSS,在HtmlEncode中要求至少转换以下字符:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
在PHP中:
htmlentities
http://www.w3school.com.cn/php/func_string_htmlentities.asp
htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
3. javascriptEncode javascript”编码”
javascriptEncode与HtmlEncode的编码方法不同,HtmlEncode是去编码,而javascriptEncode更多的像转义,它需要使用”\”对特殊字符进行转义。从原理上来讲,这都符合编码函数的一个大原则: 将数据和代码区分开,因为对于HTML Tag来说,我们对其进行”可视化(转换成可以见字符)”的编码可以将数据和HTML的界限分开。而对于javascript来说,我们除了要进行编码之外,还需要对特殊字符进行转义,这样攻击输入的用于”闭合”的特殊字符就无法发挥作用,从而避免XSS攻击,除此之外,在对抗XSS时,还要求输出的变量必须在引号内部,以避免造成安全问题。
escape()
http://www.w3school.com.cn/js/jsref_escape.asp
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ – _ + . / 。其他所有的字符都会被转义序列(十六进制\xHH)替换。
利用这个编码函数,不仅能防御XSS攻击,还可以防御一些command注入。
一些开源的防御XSS攻击的代码库:
PHP AntiXSS
这是一个不错的PHP库,可以帮助开发人员增加一层保护,防止跨站脚本漏洞。
https://code.google.com/p/php-antixss/
xss_clean.php filter
https://gist.github.com/mbijon/1098477
HTML Purifier
http://htmlpurifier.org/
xssprotect
https://code.google.com/p/xssprotect/
XSS HTML Filter
http://finn-no.github.io/xss-html-filter/
原文地址:http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/
希望可以帮助到你~望采纳哦~谢谢~