web开发常见的几大安全问题
https://www.cnblogs.com/pretty-sunshine/p/11442326.html
https://www.jianshu.com/p/c38b7f8ae890
1、涉及到私密信息 使用post请求,因为信息放在请求体中而不像get请求暴露在url上
2、HTTPS。传输层保护不足,在身份验证过程中没有使用SSL / TLS,因此暴露传输数据和会话Id.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
3、防止SQL注入。把参数放在元组里,避免拼接sql语句
4、用户密码需要加密存储,设计一个完善能防范各种类型攻击的用户认证系统。
5、防止CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。-求时附带验证信息,比如验证码或者 Token
6、预防XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。-HttpOnly Cookie。这是预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息
7、点击劫持,点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击
8、URL跳转漏洞,借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。
9、OS命令注入攻击,OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。
命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。
10、DOS攻击,Denial of Service,拒绝服务,即无法及时接收并处理外界合法请求。
11、session劫持,基于session的攻击有很多种方式。大部分的手段都是首先通过捕获合法用户的session, 然后冒充该用户来访问系统。也就是说,攻击者至少必须要获取到一个有效的session标识符,用于接下来的身份验证。
12、文件上传漏洞,允许上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。
解决方法:
1:检查服务器是否判断了上传文类型及后缀
2:对上传文件的目录设置不可执行
13、没有限制Url访问,系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击中很容易伪造请求直接访问未被授权的页面
14、越权访问,用户对系统某个模块或功能没有权限,通过拼接URL或Coolie欺骗来访问该模块或功能。如Java中通过cookie.setHttpOnly(true);
15、泄露配置信息,服务器返回的提示或错误信息中出现服务器版本信息泄露、程序出错泄露物理路径、程序出错返回SQL语句、过于详细的用户验证返回信息
16、不安全的加密存储,常见的问题是不安全的密钥生成和存储
17、重复提交数据,程序员在代码中没有对重复提交请求做限制,导致数据重复
网络病毒
网络攻击