本文目录一览:
- 1、XSS是指什么
- 2、xss注入漏洞产生的原因?xss注入过程步骤是什么?防范xss注入的方法有哪些
- 3、jsp中如何解决xss攻击问题
- 4、用正则表达式不就可以让用户名不能包含一些字符了吗,为什么还要转义
XSS是指什么
恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。什么是XSS攻击XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。
xss注入漏洞产生的原因?xss注入过程步骤是什么?防范xss注入的方法有哪些
对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的。现在让我们来普及一下XSS的一些常识,以后在开发的时候,每当有用户输入的内容时,都要加倍小心。请记住两条原则:过滤输入和转义输出。
一、什么是XSS
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。
在WEB2.0时代,强调的是互动,使得用户输入信息的机会大增,在这个情况下,我们作为开发者,在开发的时候,要提高警惕。
二、XSS攻击的主要途径
XSS攻击方法只是利用HTML的属性,作各种的尝试,找出注入的方法。现在对三种主要方式进行分析。
第一种:对普通的用户输入,页面原样内容输出。
打开(限公司IP),输 入:scriptalert(‘xss’)/script, JS脚本顺利执行。当攻击者找到这种方法后,就可以传播这种链接格式的链接 ()如:http: //go.ent.163.com/goproducttest/test.jsp?key=scriptalert(‘xss’) lt;/script,并对JSCODE做适当伪装,如:
%74%3e%61%6c%65%72%74%28%27%78%73%73%27%29%3c%2f%73%63%72%69%70%74%3e,当其 它用户当点此链接的时候,JS就运行了,造成的后果会很严重,如跳去一个有木马的页面、取得登陆用户的COOKIE等。
第二种:在代码区里有用户输入的内容
原则就是,代码区中,绝对不应含有用户输入的东西。
第三种:允许用户输入HTML标签的页面。
用户可以提交一些自定义的HTML代码,这种情况是最危险的。因为,IE浏览器默认采用的是UNICODE编码,HTML编码可以用ASCII方式来写,又可以使用”/”连接16进制字符串来写,使得过滤变得异常复杂,如下面的四个例子,都可以在IE中运行。
1,直接使用JS脚本。
img src=”javascript:alert(‘xss’)” /
2,对JS脚本进行转码。
img src=”javascript:alert(‘xss’)” /
3,利用标签的触发条件插入代码并进行转码。
img onerror=”alert(‘xss’)” /
4,使用16进制来写(可以在傲游中运行)
img STYLE=”background-image: /75/72/6c/28/6a/61/76/61/73/63/72/69/70/74/3a/61/6c/65/72/74/28/27/58/53/53/27/29/29″
以上写法等于img STYLE=”background-image: url(javascript:alert(‘XSS’))”
三、XSS攻击解决办法
请记住两条原则:过滤输入和转义输出。
具体执行的方式有以下几点:
第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等
第二、在输出方面,在用户输内容中使用XMP标签。标签内的内容不会解释,直接显示。
第三、严格执行字符输入字数控制。
四、在脚本执行区中,应绝无用户输入。
jsp中如何解决xss攻击问题
那就写个过滤器,把有小于号大于号等等,与标签或者SQL有关的全部替换,然后再存进数据库。具体换成什么,自己决定吧。
用正则表达式不就可以让用户名不能包含一些字符了吗,为什么还要转义
你只是对用户名进行分析而已,就用户名而已确实是不需要的。
转义最重要的是防止xss攻击和sql注入。
我先说xss,xss是指你本身没有一段js,但是在用户输入的时候给你加了css,如果你没转义,那么,这一段就变成js执行了,这就是xss。例子:
假设用户发布一片文章,,文章中夹带了这么一段scriptalert(document.cookie)/script;那么,在文章展示页,执行了这么一段的话就把cookie打印出来了。假设你cookie当中有用户名,那么用户就获取到了用户名,可能你觉得没什么,用户名不是什么敏感数据,但是,你数据中总有敏感的数据在里面可能被挖掘出来。
好,下一步:假设用户在console执行了这么一段js。document.cookie="username=sss' or 1 +’",这是一个注入的sql,可能包含获取你的数据库信息。
那么你在执行数据库查询的是时候,
就有可能变成下面这个语句
select * from users where username =‘sss’ or 1 +‘‘ 。
你觉得这个执行的结果会是怎么样。这是你想要的结果么。这样有可能就获取到其他人的资料了。
这样就造成了sql注入