赞
踩
一. 常见的安全隐患
1. SQL注入
常见的案例:
String query = "SELECT * FROM T_User WHERE userID='" + Request["userID"] + "';
这个时候,只需要在传递过来的userID后面加上个: or 1=1,即可以获取T_User表中的所有数据了。
解决方案:参数化查询。
2. 跨站脚本攻击(Cross-Site Scripting (XSS))
允许跨站脚本是Web 2.0时代网站最普遍的问题。如果网站没有对用户提交的数据加以验证而直接输出至网页,那么恶意用户就可以在网页中注入脚本来窃取用户数据。
eg:通过后台代码编写前端代码进行输出
1 string page += "";
攻击者只要输入以下数据:
'>'
当该数据被输出到页面的时候,每个访问该页面的用户cookie就自动被提交到了攻击者定义好的网站。
解决方案:输入的数据要进行安全校验和转义
3.跨站请求伪造(Cross-Site Request Forgery (CSRF) )
同样是跨站请求,这种与上面XSS的不同之处在于这个请求是从钓鱼网站上发起的。
比如钓鱼网站包含了下面代码:
这行代码的作用就是一个在example.com网站的转帐请求,客户访问钓鱼网站时,如果也同时登录了example.com或者保留了example.com的登录状态,那个相应的隐藏请求就会被成功执行。
解决方案:
使用Token校验,保存好Token,比如:JWT校验。
二. 两类系统要解决的常见问题
1. Web系统
(1).是否登录. 没有登录话是不能进入登录以外的页面,即使访问,也要返回到自动进入登录页面。
(2).是否有权限. 权限的展现分两种:a. 没有权限的话直接不显示. b. 没有权限但是显示,单击的时候提示没有权限。
2.APP接口
(1).接口安全,不是任何人都能访问的,必须登录后才能访问,当然也有一部分不需要登录。
(2).防止接口被知道参数后任何能直接访问,要有校验,即使地址暴露别人也访问不通。
三. 传统的基于Session的校验
1. 前言
基于Session的校验,通常是用在管理系统中或者网站上,不适用于APP接口或者前后端分离的项目。
2. 步骤
①:登录成功,将用户信息(一个实体)和该用户对应的权限信息存放到Session中。
②:对所有的页面的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。