随着互联网的广泛使用,网络应用程序已被整合到日常生活的各个方面:在线购买,网上银行应用程序,证券交易,政府行政审批等。
WEB安全漏洞
概观
Web应用程序是指使用B/S架构通过HTTP/HTTPS协议提供服务的通用术语。随着Internet的广泛使用,Web应用程序已经集成到日常生活的各个方面:在线购物,网上银行申请,证券谈判,政府行政审批等在这些Web访问中,大多数应用程序不是静态Web浏览,但它们涉及服务器端的动态处理。此时,如果Java,PHP和ASP等编程语言的程序员没有足够的安全意识,例如严格输入程序参数等,那么Web应用程序的安全问题将以无止境的方式结束。
漏洞分类
01.SQL注入
SQL注入是Web开发中最常见的安全漏洞之一。它可以用来从数据库中获取机密信息,或者使用数据库的特性来执行一系列恶意操作,例如添加用户,导出文件甚至从数据库中获取最大权限甚至是系统用户。
SQL注入的原因是有效的,因为程序没有转义到用户输入过滤器可能允许攻击者成功地向服务器提交恶意SQL查询代码,程序将在收到错误执行的攻击者后进入作为查询的一部分它导致原始查询逻辑和攻击者精心构建的恶意代码的附加执行被更改。许多Web开发人员没有意识到可以操纵SQL查询,这使得SQL查询成为可靠的命令。众所周知,SQL查询可以绕过访问控制,阻止身份验证并允许验证。此外,还可以通过SQL查询执行主机系统级命令。
保护SQL
不要信任用户输入:来验证用户输入,通过正则表达式或限制长度;进入数据库的特殊字符(',',\,&,* ,等)将被转义。或者代码转换。
不要使用动态程序集SQL,可以使用参数化SQL或直接使用存储过程进行数据查询访问。
不要使用具有管理员权限的数据库连接,对每个应用程序使用具有有限权限的单独数据库连接。
不要直接存储机密信息,加密或删除密码和机密信息。
严格限制Web应用程序数据库的操作权限,并授予用户仅满足工作的最小权限,从而最大限度地减少注入攻击对数据库的破坏。建议在启动应用程序之前使用专业的SQL注入检测工具进行检测,并纠正发现的SQL注入漏洞。 Web上有许多开源工具,例如sqlmap,SQLninja等。
不要过度细化返回的错误消息。如果目的是为了便于调试,请使用后台服务的注册表。不要在界面中暴露太多错误信息。毕竟,真正的用户并不关心太多的技术细节,只要这些话是合理的。
使用MyBatis执行SQL语句时,有一种模糊查询方法。有表达式$ {}和#{}
02.XSS攻击
XSS,也称为CSS,是跨站点脚本,跨站点脚本攻击,并称为XSS,以区别于级联CSS样式表。这是Web应用程序中的常见漏洞。
原则是攻击者将恶意HTML代码输入具有XSS漏洞的网站。当其他用户浏览网站时,HTML代码将自动执行以达到攻击的目的,例如窃取用户的cookie并破坏页面结构。重定向到其他网站等XSS攻击不断变化,但可以分为几种类型。
根据攻击形式,XSS攻击可分为三类:反射XSS,存储XSS和基于DOM的XSS。
反射XSS也称为非持久性XSS。这种类型的攻击将XSS有效负载写入URL,并通过浏览器将其“镜像”到用户。此类攻击通常需要说服用户单击恶意链接以使攻击成功。
XSS存储(也称为持久XSS)将黑客输入的恶意脚本存储到服务器的数据库中。当其他用户浏览包含恶意脚本的页面时,黑客将攻击用户。一个常见的情况是黑客编写一篇博文,其中包含恶意JavaScript脚本,该脚本将在其他用户检查文章时执行。
基于DOM的XSS是一种利用前端代码漏洞的攻击。虽然恶意脚本存储在不同的位置,但是前反射XSS和存储类型XSS实质上利用了后台代码中的间隙。
漏洞和xss存储的类型是由服务器端代码中的漏洞引起的。有效负载位于响应页面上。在DOM数据库中,在服务器发送的HTTP响应页面上找不到有效负载。在脚本中运行。
防御XSS
进入验证Web的常见漏洞(如XSS,SQL注入等)要求攻击者构建普通用户不使用的特殊链,因此必须执行输入检查。
输入检查可以在用户输入的格式检查中完成。许多网站用户名需要字母和数字的组合,例如“1234qwer”,它们也可以过滤部分XSS和SQL注入。但是,此客户端限制很容易被忽略,攻击者可以使用JavaScript或某些应用程序工具直接构建请求,并希望站点注入XSS或SQL。因此,除了客户端的格式验证之外,通常还需要在后端执行第二次检查。客户端验证的主要目的是阻止大多数滥用的普通用户,从而节省服务器资源。