架构 安全性

 

 

XSSCross Site Script)跨站脚本攻击

持久型:黑客提交含有恶意脚本的请求,保存在被攻击的web站点的数据库中,

用户浏览网页时,恶意脚本被包含在正常页面中,被浏览器执行。

例如在博客里写一段js代码,把cookie发给黑客,里面可能含有sessionID

用户访问该博客,黑客就能登录用户的账号了

反射型:诱使用户点击一个嵌入恶意脚本的链接,该脚本被浏览器解析后,

向服务器提交非用户意愿的请求

例如一个正常网站urla.com?b=1234

黑客在博客里构造一个链接,指向a.com?b=1234<script>....</script>

如果a.com会在页面里显示b的值,那么js代码就会被执行

a如果是一个转账表单,js就可以填写收款人并点击转账按钮

1、转义:<转义成<等,可以;防止大部分攻击。

echo \yii\helpers\Html::encode($str);

2、对cookie添加HttpOnly属性,可防止cookie被窃取。

 

 

 

CSRFCross Site Request Forgery)跨站点请求伪造

通过跨站请求,利用cookiesession,盗用用户身份,以合法用户的身份进行非法操作

get方式:黑客的新浪微博里有个超链接或图片的src属性,指向银行转账的url

用户最近登录过银行页面,session未失效,银行会认为用户在请求转账。

post方式:用户访问黑客的网站,网站发出post请求

1、表单添加随机token,正常页面的请求会包含该token,伪造的请求无法获得该值

$csrfToken = \Yii::$app->request->csrfToken;    yii框架将加密后的csrf存在cookie里,

表单提交后,对cookie里的csrf解密,然后和表单里的csrf进行比对

2、验证码,和token有些类似,用户体验差

3Referer,记录了请求来源

 

   

 

sql注入

攻击者获取表结构的方法:使用开源软件、开启错误回显、根据页面变化猜测数据库表结构

1、加强对变量的验证,例如期望变量是数字或邮箱,就验证变量到底是不是数字或邮箱。

2、转义特殊字符,引号分号等,$str=addslashes($str)mysqli_real_escape_string()

3、过滤可疑的语句:drop table

4、预编译,绑定参数,先把 “where id = 传给mysqlmysql预先处理这句sql,然后再传参数

可以一次编译,多次执行,提高执行效率。

 

 

其他:

错误回显、HTML注释、上传文件被执行、url+相对路径访问未开放的目录

 

 

 

 

加密

单向散列加密:md5等,对不同长度的信息进行加密,得到固定长度的输出

对称加密:加密和解密使用同一个密钥或可以相互推算

非对称加密:公钥对外公开,用公钥加密的信息,只有用私钥才能解密,公钥推不出私钥

1、传输信息:AB的公钥加密后通过非安全传输通道,将密文发给BB用私钥解密。

2、数字签名:A用自己的私钥加密发给BBA的公钥解密,由于私钥只有A有,

所以该信息不可抵赖,具有签名的性质。

 

posted @ 2020-05-26 20:02  是的哟  阅读(238)  评论(0编辑  收藏  举报