XSS、CSRF、SQL注入原因分析,危害,解决方案
一、xss
名词解释:xss指的是攻击者利用用户提交的数据没有就行过滤和转义处理的缺点,进而添加一些代码到web界面中去。利用了系统对用户的信任
危害:盗取各种账号,网站挂马,非法转账等。
造成原因:过于信任客户端提交的数据。
解决办法:对客户端提交过来的数据进行过滤,转义,正则校验。
举例:
有个表单域:<input type=“text” name=“content” value=“这里是用户填写的留言”>
1、假若用户填写数据为:<script>alert('dog!')</script>(或者<script type="text/javascript" src="./xss.js"></script>)
2、提交后将会弹出一个dog警告窗口,接着将数据存入数据库
3、等到别的客户端请求这个留言的时候,将数据取出显示留言时将执行攻击代码,将会显示一个dog警告窗口。
二、csrf攻击
名词解释:csrf(伪造跨站请求)。攻击者通过夹持用户已经登录的web网站执行攻击操作。利用 了系统对浏览器的信任
csrf攻击流程:
1.客户端请求网站A并生成一个cookie凭证保存在浏览器中。
2.客户端访问网站B,网站B自动触发客户端请求网站A。通过B网站请求网站A时,带有合法的A网站的cookie凭证。
2.A网站若只验证cookie,执行操作,则攻击成功。
解决办法:1.使用验证码2.每一个表单都有他的唯一token令牌3.验证http referer(http请求的来源地址)
三、sql注入
名词解释:攻击者把sql代码添加到程序参数里面,服务端未对参数进行应有的过滤和校验,导致攻击的sql语句被当做参数执行。
危害:利用漏洞,执行一些危险的sql语句(获取数据机密,删除修改数据)。
解决方案:
1.在表单通过js绑定一些数据类型,在服务端对数据在进行一次过滤和类型转换。
2.连接数据库时,使用预编译语句。