zoukankan      html  css  js  c++  java
  • 防XSS攻击

    什么是XSS攻击

    代码实例:

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>XSS原理重现</title>

    </head>

    <body>

    <form action="" method="get">

    <input type="text" name="xss_input">

    <input type="submit">

    </form>

    <hr>

    <?php

    $xss = $_GET['xss_input'];

    echo '你输入的字符为<br>'.$xss;

    // echo '你输入的字符为<br>'."<script>alert('xss')</script>";

    ?>

    </body>

    </html>

    注意:如果要表单提交数据到自己页面,action就设置为空

    如果我们在表单中输入的是"<script>alert('xss')</script>",那么,我们接收到的结果就是

    echo '你输入的字符为<br>'."<script>alert('xss')</script>";

    于是就弹出了alert框,相当于就修改了程序。除了这些,还能制造其他麻烦,刷新或重定向,损坏网页或表单,窃取cookie,AJAX(XMLHttpRequest)。

    注意:有些浏览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;例如chrom,我在chrom中做实验的时候,就会自动阻止,但猎豹浏览浏览器就不行。

    XSS(Cross Site Scripting)攻击的全称是跨站脚本攻击,跨站脚本攻击的方式是恶意攻击者在网页中嵌入恶意脚本程序,当用户打开网页的时候脚本程序便在客户端执行,盗取客户的cookie及用户名和密码,下载执行病毒及木马程序,甚至获得客户端的admin权限等。

    预防XSS攻击

    从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段,始终把安全放在心上。

    简单点,就是过滤从表单提交来的数据,使用php过滤函数就可以达到很好的目的。

    htmlspecialchars() 函数

    代码实例:

    <?php  

    if (isset($_POST['name'])){  

        $str = trim($_POST['name']);  //清理空格  

        $str = strip_tags($str);   //过滤html标签  

        $str = htmlspecialchars($str);   //将字符内容转化为html实体  

        $str = addslashes($str);  //防止SQL注入

        echo $str;  

    }  

    ?>  

    <form method="post" action="">  

    <input name="name" type="text">  

    <input type="submit" value="提交" >  

    </form> 

    htmlspecialchars() 函数相当于单引号的功能,不会进行解释,你输入什么就是什么,和防SQL注入很类似。

    函数详解:http://www.runoob.com/php/func-string-htmlspecialchars.html

    =========================================================

    //处理XSS,$input=$_COOKIE,$_GET,$_POST
    function sqlxss($input){
    if(is_array($input)){
    foreach($input as $k=>$v){
    $k=sqlxss($k);
    $input[$k]=sqlxss($v);
    }
    }else{
    $input=escape($input,1);
    $input=htmlspecialchars($input,ENT_QUOTES);
    }
    return $input;
    }
  • 相关阅读:
    vue路由守卫
    Vue里面提供的三大类钩子及两种函数
    VUE一款适用于pc平台的简单toast
    FileReader与URL.createObjectURL实现图片、视频上传前预览
    vue post请求 参数带有中文后端无法接收或者收到乱码,无法返回数据问题
    vue项目中跳转到外部链接方法
    在vue+elementUI项目中使用分页功能
    vue中通过修改element-ui的类修改相关组件的样式
    [Vue warn]: Failed to mount component: template or render function not defined. found in ---> <XFbwz> at src/views/XFbwz.vue <App> at src/App.vue <Root>
    Vue点击当前元素添加class 去掉兄弟的class
  • 原文地址:https://www.cnblogs.com/2019gdiceboy/p/11089766.html
Copyright © 2011-2022 走看看