web安全防护及原理
sql注入原理
通过sql
命令插入到web
表单递交或输入域名或页面请求的查询字符串,最终欺骗服务器执行恶意的Sql
命令
解决方法:
1.对用户输入进行校验,限制长度等
2.不要使用动态拼装sql
,可以使用参数化Sql
或直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接
4.不要把机密信息明文存放
xss:攻击者往Web页面里插入恶意html标签或js代码(如:在论坛中放一个恶意连接,用户点开后,获取用于的cookie信息)
1.采用post而不是get,post月get的区别:
(1)get通常用来接收数据,post用来发送数据
(2)get传输数据上有长度限制,而post没有
(3)get请求参数会留在浏览器上,而post不会
2.避免直接在cookie泄漏用户的隐私
以cookie为例,为了保持登录的稳定状态,一般会把token令牌(也就是你的账号密码)保存在cookie设置个过期时间放在浏览器进行保存,网站效验你登录状态,其实最终是根据cookie来的,如果你的网站没有对ip进行限制(一般都没有进行限制),我可以把你的cookie复制粘贴然后发送到另一台电脑上,然后设置下cookie,和登录你账号密码 是没区别的。
3.CSRF xss与csrf的区别:xss获取信息,不需要提前知道其他用户页面的代码和数据包
csrf代替用户完成指定动作,需要知道其他用户页面的代码和数据包
解决方法:
1.在客户端页面增加伪随机数
2.通过验证码的方法
一个页面从输入URL到页面加载显示完成,这个过程发生了什么?
- 浏览器开启一个线程来处理这个url请求,同时在远程的DNS服务器上启动一个DNS查询,获得请求对应的IP地址
- 浏览器与远程Web服务器建立TCP连接
- 通过该TCP连接向远程服务器发送'HTTP'的'get'请求,远程服务器找到资源并使用HTTP响应返回该资源
- Web服务器提供资源服务,客户端开始下载资源
- 接下里就是前端模块,浏览器解析HTML生成DOM树,再根据CSS渲染生成CSS DOM树,根据JSS生成DOM API操作。
浏览器本地存储
在较高版本的浏览器中,js
提供了sessionStorage
和globalStorage
。在html5
中提供了localStorage
来取代globalStorage
。
sessionStorage
用于本地存储一个会话(session
)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage
不是一种持久化的本地存储,仅仅是会话级别的存储。
而localStorage
用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
sessionStorage
、localStorage
和cookie
的区别
-
Web Storage
是为了更大容量存储而设计的,cookie
有大小限制 - 每次请求新页面的时候,
cookie
都会被发送过去 -
cookie
需要作用域,不可以跨域访问 -
cookie
需要前端开发者自己封装setCookie
和getCookie
,而Web Storage
有自己的方法,如setItem
,getItem
网友评论