网站安全问题
1:SQL 注入:
解决方案:
a. 这个问题主要是由于传入特殊字符引起的我们可以在对输入的用户名密码进入过滤特殊字符处理。
b. 使用存储过程通过传入参数的方法可解决此类问题(注意:在存储过程中不可使用拼接实现,不然和没用存储过和是一样的)。
2. XSS(跨站脚本攻击):
解决方案:
a. 通过在 Page 指令或 配置节中设置 validateRequest="false" 禁用请求验证,然后我们对用户提交的数据进行 HtmlEncode,编码后的就不会出现这种问题了(ASP.NET 中编码方法:Server.HtmlEncode(string))。
b. 第二种是过滤特殊字符,这种方法就不太提倡了,如果用户想输入小于号(<)也会被过滤掉
3.CSRF(跨站点请求伪造):
解决方案:
修改信息时添加验证码或添加 Session 令牌(ASP.NET中已经提供一个自动防范的方法,就是用页面属性 ViewStateUserKey。在Page_Init方法中设置其值:this.ViewStateUserKey = Session.SessionID)。
4. 文件上传:
解决方案:
在用户登录时加入是否可上传文件的 Session 标志。其实 Fckeditor 已经写好了。直接把验证函数 CheckAuthentication() 中的注释段中
return ( Session[ "IsAuthorized" ] != null && (bool)Session[ "IsAuthorized" ] == true );
注释去掉。在登录成功加入登录成功代码
Session[“IsAuthorized”] = true;