web dialog 内嵌 图片_Web安全防范知识基础讲解

SQL注入攻击

#!/usr/bin/env python# -*- coding: utf-8 -*-from flask import Flask,requestimport pymysqlapp = Flask(__name__)"""SQL语句注入    在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击操作包括可以通过SQL语句做的任何事:获取敏感数据、修改数据、删除数据库表……"""app.route('/')def index():    """    示例        假设我们的程序是一个学生信息查询程序,其中的某个视图函数接收用户输入的密码,返回根据密码查询对应的数据。我们的数据库由一个db对象表示,SQL语句通过 execute()方法执行        url=/?pwd='or 1=1--  ==变成==> sql = select * from students where pwd='' or 1=1--;'        这时会把 students表中的所有记录全部査询并返回,也就意味着所有的记录都被攻击者窃取了。更可怕的是,如果攻击者将 pwd参数的值设为"';drop table users; --"那么查询语句就会变成        sql = select * from students where pwd=''; drop table users; --;'        执行这个语句会把 students表中的所有记录全部删除掉。    ps        ; ==>用来结束一行语句        -- ==>用来注释后面的语句    防范方法:        1、orm可以一定程度上避免sql注入问题        2、验证输入类型==》一个视图函数直接收整型id查询,可以在url规则中限制url变量为整型        3、参数化查询,在构建sql语句时避免使用拼接字符串或者字符串格式化方式来构建sql,使用参数化查询方法            例:sqlite3库==》db.execute('select * from students where pwd=?',pwd)        4、转义特殊字符,例如引号,分号,横线  ==》 使用参数化查询时,各种接口库会为我们做转义工作    """    conn = pymysql.connect(**base_data_text)    cursor = conn.cursor()    pwd = request.args.get('pwd')    cur = cursor.execute("select * from students where pwd='%s';" % pwd)    ret = cur.fetchall()    return ret# 集体sql注入相关文档: https://www.owasp.org/index.php/SQL_Injection

xss攻击

#!/usr/bin/env python# -*- coding: utf-8 -*-from flask import Flask, request"""xss攻击【跨站脚本】    XSS是注入攻击的一种,攻击者通过将代码注入被攻击者的网站中,用户一且访问网页便会执行被注入的恶意脚本。XSS攻击主要分为反射型XSS攻击( Reflected XSS Attack)和存储型XSS攻击( Stored XSSAttack)"""app = Flask(__name__)@app.route('/he')def index():    """    示例    1、反射型XSS又称为非持久型XSS        反射型XSS又称为非持久型XSS(Non- Persistent XSS)。当某个站点存在XSS漏洞时,这种攻击会通过URL注入攻击脚本,只有当用户访问这个URL时才会执行攻击脚本        以下视图接收用户通过査询字符串传入的数据,未做任何处理就把它直接插入到返回的响应主体中,返回给客户端。如果某个用户输入了一段 Javascript代码作为查询参数name的值        请求            http://127.0.0.1:5000/he?name=        响应            

hello

前端展示 会谈出一个窗口内容为lalalal 产生的影响: 能支持js弹窗,那么就可用js代码来做任何事情,例如发起请求,重定向,发布广告【ps:html css也可以影响页面正常的输出,篡改页面样式,插入图片等】 2、存储型XSS也被称为持久型XSS( persistent XSS) 存储型XSS也被称为持久型XSS( persistent XSS),这种类型的XSS攻击更常见,危害也更大。它和反射型XSS类似,不过会把攻击代码储存到数据库中,任何用户访问包含攻击代码的页面都会被殃及。 比如,某个网站通过表单接收用户的留言,如果服务器接收数据后未经处理就存储到数据库中,那么用户可以在留言中插入任意JS代码 提交 加入重定向代码 响应 任意用户访问留言板,都会执行js脚本 解决办法 1》对html进行转义,确保用户输入的内容仅做文本展示 2》验证用户输入 """ name = request.args.get('name') return "

hello {}

".format(name)if __name__ == '__main__': app.run() # xss攻击相关 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

csrf攻击

#!/usr/bin/env python# -*- coding: utf-8 -*-from flask import Flask, request,abort"""CSRF攻击【跨转请求伪造】    原理:        某用户登录了A网站,认证信息保存在cookie中。当用户访问攻击者创建的B网站时,攻击者通过在B网站发送个伪造的请求提交到A网站服务器上,        让A网站服务器误以为请求来自于自己的网站,于是执行相应的操作,该用户的信息便遭到了篡改。总结起来就是,攻击者利用用户在浏览器中保存        的认证信息,向对应的站点发送伪造请求。"""app = Flask(__name__)@app.route('/he/delete')def delete_index():    """    示例:        假设我们网站是一个社交网站(127.0.0.1),简称网站A:攻击者的网站可以是任意类型的网站,简称网站B。在我们的网站中,删除账户的操作通过GET请求执行,由使用下面的 delete_index视图处理        当用户登录后,只要访问127.0.0.1/he/delete就会删除账户。那么在攻击者的网站上,只需要创建一个显示图片的img标签,其中的sc属性加入删除账户的URL                    当用户访问B网站时,浏览器在解析网页时会自动向img标签的src属性中的地址发起请求。此时你在A网站的登录信息保存在 cookie中,因此,仅仅是访问B网站的页面就会让你的账户被删除掉。        虽然很少有网站使用get请求来处理包含数据更改的敏感操作,但是即使使用post请求,也可以内嵌隐藏表单使用js发起攻击    防范措施        1》正确使用http方法        2》csrf令牌校验            flask-seasurf:https://github.com/maxcountryman/flask-seasurf            flask-wtf:https://github.com/lepture/flask-wtf    """    if not current_user.authenticated:        abort(401)    current_user.delete()    return 'Deleted'if __name__ == '__main__':    app.run()#  csrf攻击相关  https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

更多攻击及相关连接

  TOP25种攻击方式 https://cwe.mitre.org/top25/

  漏洞检查工具webscarab https://github.com/OWASP/OWASP-WebScarab

结语

如果大家对web安全以及安全方面有什么好的方法或者看法,欢迎留言讨论!

#安全##网络安全##web渗透##黑客#

afcc17ae54ba5b5f751f7b43850fcd62.png
9c4c7ac4e07460540267cb74193840c4.png
780118fc8f5535a119e030e54385deea.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值