Web安全的重要性
基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。因此web安全有多重要,不言而喻。
OWASP是什么
OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。其最具权威的就是“10项最严重的Web 应用程序安全风险列表”。接下来让我们了解一下OWASP 十大web漏洞。(2022)
一、SQL注入
SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现对数据库的任意操作。防范措施:1.使用预编译语句,绑定变量 2.使用存储过程 3.使用安全函数 4.检查数据类型。
二、失效的身份认证和会话管理
在开发web应用程序时,开发人员往往只关注Web应用程序所需的功能,所以常常会建立自定义的认证和会话方案。但是要正确的实现这些方案却是很难的。结果就在退出、密码管理、超时、密码找回、帐户更新等方面存在漏洞。防范措施:1、区分公共区域和受限区域。2、对最终用户帐户使用帐户锁定策略。3、支持密码有效期。4、能够禁用帐户。5、不要存储用户密码等。
三、跨站脚本攻击(XSS)
XSS是跨站脚本攻击,原理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。防范措施:使用XSS Filter,即跨站脚本过滤器,用于分析用户提交的输入,并过滤可能存在的脚本攻击及恶意的THML或简单的HTML格式错误等。
四、直接引用不安全的对象
不安全的直接对象引用(IDOR)允许攻击者绕过网站的身份验证机制,并通过修改指向对象链接中的参数值来直接访问目标对象资源,这类资源可以是属于其他用户的数据库条目以及服务器系统中的隐私文件等等。防御措施:1、使用基于用户或会话的间接对象访问,这样可防止攻击者直接攻击未授权资源。2、访问检查:对任何来自不受信源所使用的所有对象进行访问控制检查。3、避免在url或网页中直接引用内部文件名或数据库关键字。4、验证用户输入和url请求,拒绝包含./ …/的请求。
六、敏感信息泄露
许多web应用程序和app都无法正确保护敏感数据,攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。防御措施:1、对系统处理、存储或传输的数据进行分类,根据分类进行访问控制。2、对用户敏感信息的传输和存储进行加密。
七、缺少功能级的访问控制
大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。防范措施:设计严格的权限控制系统,对于每个请求和URL都要进行校验和权限确认,防止非法请求被执行等。
八、跨站请求伪造 CSRF
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。防范措施:1、验证 HTTP Referer 字段。2、在请求地址中添加 token 并验证。3、二次验证
九、使用含有已知漏洞的组件
大多数的开发团队并不会把及时更新组件和库当成他们的工作重心,更不关心组件和库的版本,然而应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,可能导致严重的数据丢失或服务器接管。防范措施:建立使用组件的安全策略,禁止使用未经安全评估的组件或者在适当情况下,对组件进行安全封装,精简不必要的功能,封装易受攻击部分等。
十、未验证的重定向和转发
重定向是服务端根据逻辑,发送一个状态码(通常为3xx),告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。(重定向是在客户端完成的)
转发是在服务器内部将请求转发给另一个资源,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程是在服务器实现的,并不是在客户端实现的所以客户端并不知道这个跳转动作,所以它的地址栏还是原来的地址。(转发是在服务器端完成的)防范措施:重定向外部网站需要验证是否在白名单,或者转发内部网站要验证是否有权限等。