欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

如何用前端防御XSS及建立XSS报警机制

来源:本站整理 作者:佚名 时间:2017-05-08 TAG: 我要投稿

我不否认前端在处理XSS的时候没有后端那样方便快捷,但是很多人都在说过滤XSS的事就交给后端来做吧。前端做没什么用。
我个人是非常反感这句话的。虽然说前端防御XSS比较麻烦,但是,不是一定不行。他只是写的代码比后端多了而已。而且前端防御XSS比后端防御XSS功能多,虽说后端也可以完成这些功能,但是代码量会比前端代码多很多很多。其实说了那么多,交给nginx||apache||nodeJs||Python会更好处理。但是我不会C,也就没办法写nginx模块了。而且也不在本文章的范围内,等我什么时候学会C再说把。有人会问为什么不直接防御,而是不防御报警呢。很简单,因为防御的话,攻击者会定位到那一段的JavaScript代码,从而下次攻击的时候绕过代码。如果不防御而报警的话,攻击者会降低警觉,不会在看JavaScript代码(至少我是这样)。回到正题,下面说的代码,是基于thinkphp框架和bootstrap3.3.5框架。
如果你的网站没有使用thinkphp3.2.3框架的话,可以参照我的思路重新写一个。这里我强调一下“前端防御XSS是建立在后端忘记做过滤,没有做过滤,疏忽做过滤的基础上的。
0×01:后端数据反馈过滤
现在大部分的网站都是在后端过滤一下后,就交给数据库,然后前端输出,整个流程只有后端做了防护,一般这个防护被绕过或者某个参数的防护没有做,那么网站就会被沦陷了(请别以为XSS只能获取cookie,熟练的程度取决于你的思想和编程)
现在我们来假设一下网站的一个URL参数没有做好过滤,直接导入数据库了,然后在前端反馈结果。代码如下:
把用户输入的内容导入到数据库里defenderXssTest_GetData.php:
  if(empty($_GET['xss'])){ //判断当前URL是否存在XSS参数
    exit();
  }
  $xssString= $_GET['xss'];
  /*数据库基础配置*/
  $mysql_name='localhost';
  $mysql_username='root';
  $mysql_password='123456';
  $mysql_database='xsstest';
  $conn= mysql_connect($mysql_name,$mysql_username,$mysql_password);
  mysql_query("setnames 'utf8'");
  mysql_select_db($mysql_database);
  $sql= "insert into XSSTest (xss) values ('$xssString')";
  mysql_query($sql);
  mysql_close();
返回数据库中最后一条数据内容(即最新的内容)defenderXssTest_QueryData.php:
/*数据库基础配置*/
  $mysql_name='localhost';
  $mysql_username='root';
  $mysql_password='123456';
  $mysql_database='xsstest';
  $conn= mysql_connect($mysql_name,$mysql_username,$mysql_password);
  mysql_query("setnames 'utf8'");
  mysql_select_db($mysql_database);
  $sql="select * from XSSTest where id = (select max(id) fromXSSTest)"; //返回数据库中最后一条数据
  $xssText= mysql_query($sql);
  while($row= mysql_fetch_array($xssText)){ //显示从数据库中返回的数据
    echo$row['xss'];
  }
  mysql_close();
前端输入及反馈defenderXssTest.html:
  "utf-8">
  前端防御XSS

[1] [2] [3] [4] [5] [6]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载