WEB开发中常见漏洞防御方法是什么

SQL注入漏洞

  • SQL注入漏洞产生原因及危害

  • 在sql查询中很多程序员会将变量拼接入sql语句后再进行查询,这样如果黑客在参数中插入其他sql语句就可能导致我们网站的密码被被黑客查询出来或者被拖取大量数据,如果在开发中使用了字符串拼接进SQL语句就必须进行严格的过滤,任何用户输入的内容都不可信任,以下列举几种防御方法。

数字型查询注入防护

查询例子如下

如果是这样的数字型注入我们可以强制将传入参数转换为整数,以剔除黑客拼接的SQL语句。修改如下

这是这个网页正常查询的返回的结果。

WEB开发中常见漏洞防御方法是什么

这是一个典型的数字型注入,我们输入注入语句可见注入成功

WEB开发中常见漏洞防御方法是什么

我们强制转换类型到代码中:

WEB开发中常见漏洞防御方法是什么

我们再执行注入可以看到恢复正常查询,注入失败。

WEB开发中常见漏洞防御方法是什么

非数字型注入防护-通用防护

如果查询参数不是数字,那么我们该如何防护呢,那么这里可以使用通用型防护,对数字型和非数字型同样适用,我们知道web中获取参数的方式主要有三种分别是get、post、cookie。那么我们防护的主要方面也是这三个方面,我们可以对网站的所有流量进行黑名单过滤。当然这个也可以拦截xss漏洞。具体流程如下:

WEB开发中常见漏洞防御方法是什么

具体实现代码:

测试

同样我们在原先的网站上将我们的waf.php文件包含进去,在执行注入操作,可见我们已经将非法操作拦截。

WEB开发中常见漏洞防御方法是什么

WEB开发中常见漏洞防御方法是什么

使用预处理对注入进行防护

PHP预处理查询的例子

  • 预处理的优点

  • 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。

  • 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。

  • 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。

XSS漏洞的防护

  • xss漏洞产生的原因及危害

  • xss漏洞和sql注入一样也是注入型漏洞,主要是黑客在网页中注入恶意的js代码,可以导致我们的cookie被盗取,黑客通过cookie欺骗就能轻松登陆我们的后台,黑客也可以利用js进行挂马、黑帽seo、攻击客户计算机等操作危害十分严重。那么如何防御呢,我将讲解两种主要防御方法。

  • xss分类

  • xss主要分为反射型,储存型、和DOM型

转义 htmlspecialchars()

我们知道在数据库查询出来的数据可以打印到网页上,但是数据可能是用户在注册或者输入其他表单输入的,那么这里用户可能输入的是js或者html代码,这里就可能导致,用户输入的代码在浏览器中被解析并执行,那么我们这就可以通过 htmlspecialchars()将其转义为不可解析的字符串,从而避免此类攻击。

这是一个模拟存在xss漏洞的网页。我们进行模拟攻击和修复。

我们传入一个xss攻击代码,可见直接获取了当前网页的cookie内容

WEB开发中常见漏洞防御方法是什么

那我们在输出时候给$id加上htmlspecialchars()呢

我们可以明显看到浏览器不再解析我们传入的js代码,而是将它当做普通字符串输出。

WEB开发中常见漏洞防御方法是什么

通用型防护

将我们sql注入的通用型防护waf.php包含到该网页同样可以实现过滤。

WEB开发中常见漏洞防御方法是什么

CSRF漏洞的防御

  • CSRF漏洞产生的原因和危害

  • CSRF漏洞主要是我们的网站没有对表单验证,这个表单是不是我们网站自己本身提交的,如果有一个改密码的表单被人构造并放在了其他人的网站上,我们在打开这个黑客精心构造的域外表单时候就导致了我们本身的密码被修改,黑客也可以通过CSRF漏洞进行蠕虫式传播,新浪微博就曾遭遇过此类攻击,黑客精心构造表单,当你打开这个表单的链接时候就会自动发送一条微博,其他人打开同样进行这样的操作。

TOKEN防护

我们如何验证这个表单是不是我们自己网站本身提交的呢,那么我们可以在每个表单下生成一个隐藏的input表单存放一个TOKEN,在进行表单提交时会验证这TOKEN是否在SESSION上,如果在就执行这个表单的操作,如果TOKEN不在或者根本没提交TOKEN那么说明表单是伪造的,我们直接截断操作。具体流程如下:

WEB开发中常见漏洞防御方法是什么

防护代码编写:

测试

  • 我们分别写两个文件分别是index.php用于提交表单,xss.php用于验证表单

  • index.php

xss.php

可以看到我们代码非常简单,只要我们通过动态的TOKEN验证,那就会输出check success,否则输出NO-TOKEN!

首先我们直接提交表单是没有问题的直接返回成功

WEB开发中常见漏洞防御方法是什么

但是我们F12将TOKEN值删除再提交呢?

WEB开发中常见漏洞防御方法是什么

可以看到会直接截断

WEB开发中常见漏洞防御方法是什么

web防御中的代码安全:

感谢你的阅读,相信你对“WEB开发中常见漏洞防御方法是什么”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!

文章标题:WEB开发中常见漏洞防御方法是什么,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/29723

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月26日 上午1:39
下一篇 2022年9月26日 上午1:40

相关推荐

  • 用办公协作思维提升新媒体运营工作效率

    新媒体运营行业是随着互联网发展而来的职位,在每个公司都担任着推广营销的重要工作。它要求相关从业者 “懂营销” ,可以运用良好的推广营销方式,善于利用热点事件,实现有效的品牌或产品营销。除此之外,也要精于内容和策划,对数据分析也要在行。 简单来说就是:“会写文章,能P图,玩的了创意…

    2022年3月20日
    13900
  • windows nvidia驱动如何更新

    nvidia驱动更新方法: 1、首先我们下载一个nvidia GeForce experience软件。 2、下载安装完成后,点击右下角的nvidia图标,打开nvidia GeForce experience。 3、打开后,进入上方的“驱动程序”选项。 4、然后点击“检查更新文件”可以扫描到最新的…

    2022年8月29日
    4900
  • windows中raid0和raid1的区别是什么

    raid0和raid1的区别 一、概念 1、RAID 0: RAUD 0就是多磁盘数据分组同步写读。 2、RAID 1: RAID 1就是多磁盘同数据同步写读。 二、安全性 1、RAID 0: 无数据备份功能,安全性差。 2、RAID 1: 盘间是相互备份的,安全性高。 三、性能 1、RAID 0 …

    2022年9月8日
    11200
  • Vuex怎么获取getter对象中的值

    Vuex获取getter对象中的值 getter取值与state取值具有相似性 1.直接从根实例获取 // main.js中,把store注册在根实例下,可使用this.$stroe.getters直接取值computed: { testNum1() { return this.$store.get…

    2022年8月31日
    19700
  • SQL语句知识点有哪些

    一、SQL简介 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。 1.什么是数据库 数据库 (DB database) 概念:数据仓库 …

    2022年9月22日
    7200
  • html是不是静态页面

    html是静态页面;html表示结构,css表示样式,由HTML与CSS制作的页面叫做静态页面,动态页面指的是动态数据的页面,而非模拟数据的页面,html网页当中的数据均为静态数据,当前端页面与后台整合之后,网页当中的数据是来源于数据库时,则称为动态页面。 本教程操作环境:windows10系统、H…

    2022年9月8日
    7200
  • html中头部标签是什么

    html中“<head>”是头部标签。head标签用于定义文档的头部,它是所有头部元素的容器;文档的头部描述了文档的各种属性和信息,包括文档的标题、在Web中的位置以及和其他文档的关系等。head中的元素有base、link、meta、script、style、title。 本教程操作环…

    2022年9月15日
    13100
  • Word尾注和交叉引用的区别是什么

    尾注和交叉引用的区别: 答:尾注是给选中的文字添加注释,存在于文章的结尾。 而交叉引用则是把脚注和尾注以及题注全部都交叉在一起使用。 一个是针对标题和结尾,一个仅仅是存在于文章的结尾。 尾注和交叉引用更多介绍: 1、尾注是可以放在文章页面的最下面的,可以对一些元素加以说明。 2、还可以将引用文章的出…

    2022年8月31日
    11700
  • windows office365怎么卸载干净

    office365卸载干净步骤: 1、左键你的开始菜单,找到设置,如图。 2、点击进入到应用中。 3、在应用与功能里找到和office365。 4、点击卸载。 6、将保留我的的数据和使用习惯取消勾选。 7、此时点击继续卸载,就会将残留文件也移除了。 到此,关于“windows office365怎么…

    2022年9月21日
    13800
  • Javascript怎样替换数组中的特定值

    替换数组中的特定值 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。特别需要注意插入值的位置! // arrayObject.splice(index,howmany,item1,…..,itemX)var plants = [‘Saturn’, ‘…

    2022年8月31日
    17200
联系我们
关注微信
关注微信
分享本页
返回顶部
PingCode 比 Jira 更好用的研发管理工具。免费试用