Web开发常见安全问题

计算机程序主要就是输入数据 经过处理之后输出结果,安全问题由此产生,凡是有输入的地方都可能带来安全风险。根据输入的数据类型,Web应用主要有数值型、字符型、文件型。要消除风险就要对输入的数据进行检查,对于Web应用来说,检查的位置主要是前端和后端。前端检查只能防止正常状况,没法防止通过工具、程序绕开前端检查直接把数据发送给后端。

目录

(1)SQL注入

(2)跨站脚本攻击(xssf或cssf)

(3)CSRF(Cross-Site Request Forgery),跨站请求伪造攻击

(4)文件上传漏洞

(5)没有限制Url访问

(6)越权访问

(7)泄露配置信息

(8)不安全的加密存储

(9)传输层保护不足

(10)重复提交数据


web应用通常存在的几个安全问题

(1)SQL注入

拼接的SQL字符串改变了设计者原来的意图,执行了如泄露、改变数据等操作,甚至控制数据库服务器,SQL Injection 与 Command Injection等攻击包括在内。

1:采用参数化查询的方法。
访问数据库时,在需要填入数值或数据的地方,使用参数(Parameter)来给值;因为数据库服务器不会将参数的内容视为Sql指令的一部分来处理,而是在数据库完成SQl指令的编译后,才套用参数

2:非得用一些原生的Sql语句;则我们必须对输入的那些变量进行优化处理。
a:如果查询的字段是数字等类型,在拼接sql前先判断输入的是否是合法数字
b:如果字段数字符串内心,则需要对单引号进行转义

(2)跨站脚本攻击(xssf或cssf)

跨站脚本(Cross-Site Scripting)是指远程web页面的html代码可以注入恶意目的的代码,用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取cookie信息等

1:输入过滤。
永远不要相信用户的输入,对用户输入数据做一定过滤,对特殊危险字符进行转义处理,再存储到数据库

2:输出编码。
服务器端输出到浏览器的数据可以使用系统安全的函数进行编码或转义。如htmlEncode,JavaScriptEncode

3:httpOnly Cookie。
web应用程序在设置cookie时,将其属性设为HTTPonly;可以避免网页的cookie被客户端恶意窃取

(3)CSRF(Cross-Site Request Forgery),跨站请求伪造攻击

可能会窃取或操作客户会话和cookie,他们可能模仿合法用户

CSRF 攻击必须要三个条件
1.用户已登录站点A,并在本地记录了cookie
2.用户没有登陆站点A的情况下,访问了恶意攻击者提供的危险站点b(B站点要求访问A站点)
3.站点A没有任何CSRF防御

预防 CSRF
1:正确使用get,post请求
a:GET请求常用在查看,列举,展示等不需要改变资源属性的时候(数据库query查询)
b:POST请求常用于Fromb表单提交,改变资源属性(数据库insert,update,delete)

2:在请求中加token
当客户端请求页面时,服务器会生成一个随机数Token,并且将Token,放置到session中,然后将Token发给客户端。下次Token会随着表单一起提交到服务器端。接受到请求后,服务器端对Token值进行验证,判断是否和session中Token值相等

3:检查http头部refer信息
服务器端收到请求后,检查头信息,只接受来自本域的请求

(4)文件上传漏洞

如:允许上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。
解决方法:
1:检查服务器是否判断了上传文类型及后缀

2:对上传文件的目录设置不可执行


(5)没有限制Url访问

系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击中很容易伪造请求直接访问未被授权的页面

(6)越权访问

用户对系统某个模块或功能没有权限,通过拼接URL或Coolie欺骗来访问该模块或功能。如Java中通过cookie.setHttpOnly(true);

(7)泄露配置信息

服务器返回的提示或错误信息中出现服务器版本信息泄露、程序出错泄露物理路径、程序出错返回SQL语句、过于详细的用户验证返回信息

(8)不安全的加密存储

常见的问题是不安全的密钥生成和存储

(9)传输层保护不足

在身份验证过程中没有使用SSL / TLS,因此暴露传输数据和会话Id,

(10)重复提交数据

程序员在代码中没有对重复提交请求做限制,导致数据重复
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KunQian_smile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值