你需要知道的“Web安全测试”(最后的总结蛮深刻)

2024-02-23 21:08

本文主要是介绍你需要知道的“Web安全测试”(最后的总结蛮深刻),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Web应用程序中是什么导致安全性问题呢?一般有以下几个原因:
  1、复杂应用系统代码量大、开发人员多、难免出现疏忽。
  2、系统屡次升级、人员频繁变更,导致代码不一致。
  3、历史遗留系统、试运行系统等多个Web系统共同运行于同一台服务器上。
  4、开发人员未经过安全编码培训或者公司根本就没有统一的安全编码规范。
  5、测试人员经验不足或者没经过专业的安全评估测试就发布上线。
  6、没有对用户的输入进行验证,举几个例子:
  1)永远不要信任用户的输入,要对用户的输入进行校验
  2)数字型的输入必须是合法的数字
  3)字符型的输入中对 编码符号要进行特殊处理
  4)验证所有的输入点,包括Get,Post,Cookie以及其他HTTP头
Web应用通常存在的十大安全问题:
  1、SQL注入
  拼接的SQL字符串改变了设计者原来的意图,执行了如泄露、改变数据等操作,甚至控制数据库服务器, SQL Injection与Command Injection等攻击包括在内。
  2、跨站脚本攻击(简称CSS或XSS)
  跨站脚本(Cross - SiteScripting)是指远程Web页面的Html代码可以插入具有恶意目的数据,当浏览器下载该页面,嵌入其中的恶意脚本将被解释执行,从而对客户端用户造成伤害。
  3、没有限制URL访问
  系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的伪造请求,直接访问未被授权的页面.。
  4、越权访问
  用户对系统的某个模块或功能没有权限,通过拼接URL或Cookie欺骗来访问该模块或功能。
  5、泄露配置信息
  服务器返回的提示或错误信息中出现服务器版本信息泄露、程序出错泄露物理路径、程序查询出错返回SQL语句、过于详细的用户验证返回信息。
  6、不安全的加密存储
  常见的问题是不安全的密钥生成和储存、不轮换密钥和使用弱算法。使用弱的或者不带Salt
  的哈希算法来保护密码也很普遍。外部攻击者因访问的局限性很难探测这种漏洞。他们须先破解其他东西以获得需要的访问。
  7、传输层保护不足
  在身份验证过程中没有使用SSL / TLS,因此暴露传输数据和会话ID,被攻击者截听,或使
  用过期或者配置不正确的证书。
  8、登录信息提示
  用户登录提示信息会给攻击者一些有用的信息,作为程序的开发人员应该做到对登录提示信息的模糊化,以防攻击者利用登录得知用户是否存在。
  9、重复提交请求
  程序员在代码中没有对重复提交请求做限制,这样就会出现订单被多次下单,帖子被重
  复发布。恶意攻击者可能利用此漏洞对网站进行批量灌水,致使网站瘫痪。
  10、网页脚本错误
  访问者所使用的浏览器不能完全支持页面里的脚本,形成“脚本错误”,也就是网站中的脚本没有被成功执行。遇到“脚本错误”时一般会弹出一个非常难看的脚本运行错误警告窗口
  
归纳一下,主要有以下几点:
  1、永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式或限制长度;对单引号和双”-“进行转换等。
  2、永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
  3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
  4、不要把机密信息直接存放,加密或者Hash掉密码和敏感的信息。
  5、应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。
  6、SQL注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用SQL注入检测工具jsky、MDCSOFT SCAN等。采用MDCSOFT - IPS可以有效的防御SQL注入、XSS攻击等。

欢迎大家在工作和学习中相互交流和成长。 文章来自非比君测的转载,作者非比君,因为没有找到原链接,所以暂不列出。
最后,支付宝账号(supassxu@163.com),感兴趣的朋友可以激励下本人,哈哈,请不要超过6元,谢谢,非诚勿扰。

这篇关于你需要知道的“Web安全测试”(最后的总结蛮深刻)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739923

相关文章

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres