常见web安全及防护原理

这篇具有很好参考价值的文章主要介绍了常见web安全及防护原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

作为新手刚入门解决web安全问题时,可以参考大量的理论知识,但具体的攻击细节以及解决方法却很模糊。特此根据工作经验,详细罗列了下。以防自己忘记,也方便快速教会别人~
本文将介绍以下几种常见的攻击手段

  • SQL注入攻击
  • XSS攻击

sql注入

攻击者在用户输入中添加了额外的sql语句,对数据库进行了非法操作

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

如果后台的sql语句使用了动态拼接sql或者非参数化sql,就容易发生sql注入

动态拼接举例:

在这里插入代码片

非参数化sql举例:(例如用的${name}而不是#{name})

在这里插入代码片

那么web是如何攻击的呢?

例如界面上有个删除操作,前台将taskId传给了后台,攻击者故意写成777 | where 1=1
后台收到参数不加任何校验,执行了sql

delete from tb_task where id = ${id}

实际上会执行这个sql

delete from tb_task where id = 777 | 1=1;

显然,就会将整个tb_task表中的数据删掉了,从而达到了攻击的目的,毁坏了系统,让系统无法正常工作。数据都丢了,客户不投诉你才怪~

那么如何解决这类问题呢?

1.从前端入手,对用户输入进行校验,例如不要输入|&等特殊字符。但用户有时候就是想输入这些特殊字符呢?
2.从后端入手,后端构建一个防御体系框,对输入进行校验。
3.还是从后端入手,使用参数化SQL命令

sql注入原理
就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
总的来说有以下几点:
1)永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引
号和双"-"进行转换等。
2)永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
3)永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4)不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息

XSS攻击

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

将指令代码注入到网页上,网页上加载了这个恶意指令,就容易发生XSS攻击

恶意指令举例

alert('I am a bad link, go to ***');

那么web是如何攻击的呢?

正常情况下,后台返回什么数据,前台就展示什么数据。但后台数据可能包含了恶意指令,例如恶意html或js代码,前台却执行了。
恶意指令可以打开一个弹窗或新页面,弹窗或者页面上有一个恶意链接,诱导了用户打开。用户在恶意页面上(用户以为是合法页面)填写了自己的机密信息,这些信息就被恶意者盗走了。数据被盗走了,客户不投诉你才怪~

那么如何解决这类问题呢?

1.前端不要什么数据都展示好嘛?你和后台可是互不相信滴。对后台返回的数据都要进行转义或者特殊处理,再呈现给用户。React框架JSX语法对此就很友好的处理了,此外一些组件库框架也会友好处理。
2.如果你的框架很原始,那就只能自己动手转换了。对要展示在页面上的数据进行encode等操作。
3.后台数据大部分也是用户输入存入后台库的,所以也可以在界面输入上加校验。一般校验用户输入的长度和非法字符。如果业务上对某个参数有自己的规则,则要按照客户的要求来校验。

常见非法字符:

<>&|;,*

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容

Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意 html标签或者javascript代码。比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点。
XSS防范方法
首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击。
首先,避免直接在cookie 中泄露用户隐私,例如email、密码等等。
其次,通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放。
如果网站不需要在浏览器端对cookie 进行操作,可以在Set-Cookie 末尾加HttpOnly 来防止javascript代码直接获取cookie 。
尽量采用POST 而非GET 提交表单

XSS和CSRF的区别(没看懂)

XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。
要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  • 登录受信任网站A,并在本地生成Cookie。
  • 在不登出A的情况下,访问危险网站B。
    CSRF的防御:
  • 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。
  • 通过验证码的方法

保护Cookie

对cookie的保护一般放在tomcat安全加固中。可以参考tomcat安全方面的资料文章来源地址https://www.toymoban.com/news/detail-408379.html

到了这里,关于常见web安全及防护原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis常见安全防护策略及故障排除

    1.Redis中线上使用keys *命令,也是非常危险的。因此线上的Redis必须考虑禁用一些危险的命令,或者尽量避免谁都可以使用这些命令,Redis没有完整的管理系统,但是也提供了一些方案。 修改 redis.conf 文件,添加 然后重启redis。 重命名为\\\"\\\" 代表禁用命令,如想保留命令,可以重

    2024年02月05日
    浏览(34)
  • 面试:web安全及防护

    XSS攻击原理 XSS(Cross-Site Scripting,跨站脚本攻击) 是一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登陆网站时就会执行这些恶意代码,这些脚本可以读取 cookie ,session tokens,或者其它敏感的网站信息,对用户进行钓鱼欺诈,甚至发起蠕虫攻击等。 XSS避免

    2024年02月13日
    浏览(32)
  • 信息安全-网络安全漏洞防护技术原理与应用

    网络安全漏洞: 又称为脆弱性,简称漏洞。 漏洞 一般是 致使网络信息系统安全策略相冲突的缺陷 ,这种缺陷通常称为 安全隐患 安全漏洞的影响: 主要有机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控制性下降、真实性不保等 根据已经公开的漏洞信息,网络

    2024年02月11日
    浏览(53)
  • WEB服务器的超级防护——安全WAF

          随着网络和信息技术的不断发展,特别是互联网的广泛普及和应用,网络正在逐步改变人类的生活和工作方式。越来越多的政府和企业组织建立了依赖于网络的业务信息系统,例如电子政务、网络办公等。网络也对社会各行各业产生了巨大的影响,使信息安全的重要性

    2024年02月20日
    浏览(42)
  • Java Web应用中的安全与防护

    Java Web应用是现代互联网应用的重要组成部分,它们为用户提供了丰富的功能和服务。然而,Java Web应用也面临着各种安全漏洞和攻击,这些漏洞和攻击可能导致数据泄露、信息盗用、系统破坏等严重后果。因此,Java Web应用的安全与防护是非常重要的。 在本文中,我们将从以

    2024年01月21日
    浏览(45)
  • Web应用安全攻防战:识别十大威胁,掌握防护要点

    OWASP(Open Worldwide Application Security Project)是一家致力于应用安全威胁研究的非盈利机构。通过对超过20万个组织进行调研分析,该机构每三年左右就会发布一次《Web应用安全风险Top10》报告,这个报告已经成为全球企业开展Web应用安全防护时的重要参考。然而最近,卡巴斯基的

    2024年04月16日
    浏览(74)
  • Web应用安全威胁与防护措施(1),全靠这套面试题

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月28日
    浏览(46)
  • 云计算:从基础架构原理到最佳实践之:云计算网络安全与防护

    作者:禅与计算机程序设计艺术 云计算的高速发展带来了新的机遇,也带来了新的挑战。不管是在经济领域还是工程领域都面临着巨大的变革和新挑战。如何保证云计算平台的安全运行、数据的安全传输、用户数据的安全存储,成为一个重中之重的问题。 随着云计算的日益

    2024年02月08日
    浏览(42)
  • CTF-攻防世界web新手入门篇

    攻防世界网址 https://adworld.xctf.org.cn 新手篇虽然非常简单,但是对于小白来说这种最常见的常识或者思路可能不熟悉,所以在这里给大家分享一下最不起眼的小常识或者小技巧。 1、view_source 访问题目场景,如下图 鼠标右击不能用,但是F12也可以看源码,发现有个脚本是实现

    2024年02月06日
    浏览(47)
  • 什么是 Web 3.0?(新手入门指南)

    目录 在这篇文章中,我们将解释什么是 Web 3.0,它的技术是如何发展的,哪些项目正在构建这个新的互联网,以及您如何参与其中。 Web 3.0 的定义 加密货币和区块链 Web 3.0 和元宇宙的互操作性 Web 3.0 技术的演进 Web 1.0 (1989-2005):只读 Web 2.0(2005 年至今):读写 Web 3.0(现在出

    2024年02月03日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包