#web安全是web最重要的环节,最重要的还是码农的代码通不过安全测试就发不出去。。。
##XSS
###攻击
XSS的核心是在攻击者提交数据,使其它用户访问页面,页面渲染时执行本不该执行的代码,获得本不应该有的执行权限
XSS分类
1 反射型
通过URL访问执行的脚本
访问
http://fovweb.com/xss/message.php?send=<script>alert(‘xss’)</script>
页面输出
<script>alert('xss')</script>
2 存储型
通过存储数据到后端,再由前端展示到前端
例如百度百科,提交XSS到页面
<script>alert('xss')</script>
页面也同样输出存储在后端的同样代码,此时就会执行存储的内容
3 DOM型
通过innerHTML替换文本内容,如果让用户自己贴图
此时给img一个错误的src,就会触发xss
###防护
原则:不相信客户输入的任何数据
- 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie
- JSON的数据输出如果不使用smarty框架就在header头中加上header("Content-type: application/json")或者输出的时候把输出数据都urlEncode一次
- 职责划归,通过改变url地址访问的页面,URL变化只能用于数据查询
- 任何数据都需要转义一次
- 不要在dom操作的时用innerHTML这种方法生成html
##CSRF ###攻击 跨站请求伪造是通过第三方网站利用多窗口浏览器在同一浏览器进程下可以使用主站的cookie信息的问题造成的 因为多窗口浏览器新开的窗口是具有当前所有会话的。即我用IE登陆了我的Blog,然后我想看新闻了,又运行一个IE进程,这个时候两个IE窗口的会话是彼此独立的,从看新闻的IE发送请求到Blog不会有我登录的cookie;但是多窗口浏览器永远都只有一个进程,各窗口的会话是通用的,即看新闻的窗口发请求到Blog是会带上我在blog登录的cookie。 ###防护
- 任何数据型操作(如更新删除)都需要使用post方法
- 任何数据型操作(如更新删除)都需要带上访问页面时生成的唯一token
##SQL注入 ###所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。 通过 ###防护
- 永远不要相信前端的验证是有用的,随便就能绕过去。
- 重点是,永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
- 为线上的程序分配合理的数据库帐号。
- 数据库错误消息封装一次。 ##URL跳转
##权限绕过
##逻辑漏洞
##任意文件读取
##敏感信息泄露
##安全配置错误