Web安全,也可以叫做Web应用安全。
互联网本来是安全的,自从有了研究安全的人之后,互联网就变的不安全了。
Web安全的本质是信任问题
由于信任,正常处理用户恶意的输入导致问题的产生
非预期的输入
安全是木桶原理,短的那块板决定的木桶世纪能装多少水,同样的,假设把99%的问题都处理了,那么1%的余留会是造成安全问题的那个短板
xss
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的,注入式攻击方式。
原因:对于用户的输入没有进行严格的控制,直接输出到页面
危害:盗取个人用户账号,窃取数据,非法转账,挂马
产生危害的XSS是Exp,没有产生危害的是Poc
xss分类
存储型(持久性) 留言板,聊天
反射型(非持久性) 如get传入参数如获取get跳转改地址,cookie(注入点很多)
DOM型 也属于反射型的一种,写dom的时候写进xss的dom
其他xss类别
mXSS(突变型xss)
UXSS (通用性xss)
Flash XSS
UTF-7 XSS
MHTML XSS
CSS XSS
VBScript XSS
实例:在之前做的聊天软件中,相互之间聊天各种贴代码会产生很多的xss,现在的话一般来说会把<>转义成实体,然后用正则表达式清空 onerror后面的内容防止插入xss执行js代码.
CSRF跨站伪造请求
简介 :也成为one click attack/session riding,利用被害者的身份去发送请求
实例:比如你使用session/cookie直接可以登录,可以伪造一个form表单,让你去创建一个账号,或者做些你权限中可以使用的功能
注意本地文件file://是跨域限制的,ip和域名是相同域
csrf与xss的区别
xss:利用对用户输入的不严谨然后执行js语句
csrf:利用伪造受信用户请求
csrf可以通过xss
csrf防御方法
通过验证码进行防御
检查请求来源
增加请求参数token
SQL注入
在需要进行SQL语句的地方,如登录,输入保存等需要数据库操作的地方都可能会被用户输入SQL语句之后执行出来
解决方法:1.php使用pdo或者mysqli,毕竟php7以后不支持源生mysql了,其他语言应该也有相应封装的库
2.或者把”’”转换成”\’”, _%回车等过滤掉