Web高级 网站安全

时间:2019-02-19 00:57:34   收藏:0   阅读:179

1. SQL注入

虽然现在SQL注入发生的情况总的来说越来越少,还是提二句。关于什么是SQL注入大家都知道就不多说了。

1.1 原理

我们在做前端页面的时候,少不了会又各种输入框,然后通过GET或者POST发送至后端。
那么如果后端在处理时直接使用SQL拼接的话就会产生问题。

//比如提交地址如下
//http://mysite/search?name=‘SQL‘
在后端生成SQL语句为
var paramName = ‘SQL‘//从URL获取
var sqlQuery = "select * from table1 where name=‘"+paramName+"‘"
//生成的结果为 - select * from table1 where name=‘SQL‘
//如果我们在URL中带过来的参数是 SQL or 1=1
//生成的结果则为 - select * from table1 where name=‘SQL‘ or 1=1
//那么学过SQL都知道我们还可以在后面再添加语句以获取额外的数据

1.2 防范手段

  1. 通过正则表达校验用户输入
    不实用,不管是在客户端还是服务端做验证,都不能100%保证过滤所有情况.
    还有一个缺点就是会对正常数据输入造成一定影响。
  2. 实用存储过程
    不实用,不管哪个项目都不可能全局实用存储过程。
  3. 参数化SQL语句
    较为常见
    如: SqlCommand.Parameters.Add("@name", SqlDbType.string).Value = "SQL";
    原理概述:数据库有一套执行计划重用原理,SQL语句的语句体会被预编译为执行计划,而参数会被隔离和辨识为独立部分。那么对于不符合预期的参数值或类型就不会得到正确执行。
  4. 语言框架携带的对象->SQL转换机制
    较为常见,如Hibernate、Entity Framework 的LINQ

2. XSS

2.1 类型

2.2 防御手段往下看

3. HTTP协议隐患

HTTP协议本身的安全隐患,暂略

4. 防御手段

4.1 Content Security Policy (CSP)

CSP 的实质就是白名单制度,服务端明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本。

refs:
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

原文:https://www.cnblogs.com/full-stack-engineer/p/10398693.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!