程序园

Web安全之XSS攻击demo

2019-05-02  本文已影响0人  空巷丨

Web安全之XSS攻击demo

环境:

本地html文件,IE浏览器(谷歌会屏蔽跨域请求,需要部署什么的操作,这里一切从简),django后台,mysql数据库

前端

前端代码(将注册、登录、首页三个页面集合在一起):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script>
        //注册请求
        function regi(){
            username = document.getElementById(1).value
            password = document.getElementById(2).value
            nickname = document.getElementById(3).value
            $.ajax({
              type: 'POST',
              url: "http://127.0.0.1:8000/regist",
              header:{
                ContentType:'application/x-www-form-urlencoded'
              },
              data: {username:username,password:password,nickname:nickname},
              dataType:'json',
              success: function(res){
                if(res.state=='ok'){
                    alert("注册成功")
                }else{
                    alert('注册失败')
                }
              },
            });
        }
        //登录请求
        function login(){
            username = document.getElementById(4).value
            password = document.getElementById(5).value
            $.ajax({
              type: 'POST',
              url: "http://127.0.0.1:8000/login",
              header:{
                ContentType:'application/x-www-form-urlencoded'
              },
              data: {username:username,password:password},
              dataType:'json',
              success: function(res){
                console.log(res)
                if(res!=null && res != ''){
                    alert('登录成功')
                    document.getElementById(6).innerHTML = res[0].nickname
                }else{
                    alert('登录失败')
                }
              },
            });
        }
    </script>
</head>
<body>
    <div align="center" style="padding-top: 100px;border:1px;border-style: solid;padding-bottom: 100px">
        <h2>注册</h2>
        <input id=1 type='text' placeholder="用户名" value="" />
        <input id=2 type='text' placeholder="密码" value="" />
        <input id=3 type='text' placeholder="昵称" value="" />
        <input onclick="regi()" type="button" value="点击">
    </div>
    <div align="center" style="padding-top: 100px;border:1px;border-style: solid;padding-bottom: 100px">
        <h2>登录</h2>
        <input id=4 type='text' placeholder="用户名" value="" />
        <input id=5 type='text' placeholder="密码" value="" />
        <input onclick="login()" type="button" value="点击">
    </div>
    <div align="center" style="padding-top: 100px;border:1px;border-style: solid;padding-bottom: 100px">
        <h2>首页</h2>
        <div>
            昵称:<p id=6></p>
        </div>
    </div>
    
</body>
</html>

前端界面展示(此处比较low逼,勿喷):

在这里插入图片描述

后端

后端环境

正常演示

在这里插入图片描述

XSS攻击演示

在这里插入图片描述

原理

由于用户输入的数据可能带有具有攻击行的html标签或者js代码,而浏览器将用户的输入直接渲染出来所以会造成这样的效果

避免

代码

demo

小结

欢迎各位大佬进来讨论,共同进步

上一篇 下一篇

猜你喜欢

热点阅读