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

相关推荐

  • python中DataFrame数据合并merge()和concat()方法怎么用

    merge() 1.常规合并 ①方法1 指定一个参照列,以该列为准,合并其他列。 import pandas as pddf1 = pd.DataFrame({‘id’: [‘001’, ‘002’, ‘003’], ‘num1’: [120, 101, 104], ‘num2’: [110, 10…

    2022年9月21日
    1.7K00
  • windows nvidia驱动如何更新

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

    2022年8月29日
    53400
  • 加密在网络上有哪些作用

    加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。加密后的口令即使被黑客获得也是不可读的,加密后的标书没有收件人的私钥也就无法解开,标书成为一大堆无任何实际意义的乱码,这样即使被盗也不会有损失;所以加密对于保护文件是相当的重要。 本教程操作环境:windows7系统、Dell G3电脑…

    2022年9月13日
    56900
  • Redis集群与扩展知识点分析

    Redis的高可用 1.为什么要高可用 防止单点故障,造成整个集群不可用 实现高可用通常的做法是将数据库复制多个副本以部署在不同的服务器上,其中一台挂了也可以继续提供服务 Redis实现高可用有三种部署模式:主从模式,哨兵模式,集群模式 2.主从模式 主节点负责读写操作 从节点只负责读操作 从节点的…

    2022年9月15日
    68900
  • APT框架TajMahal怎么用

    概述 ‘TajMahal’是卡巴斯基实验室在2018年秋季发现的一个以前未知且技术复杂的APT框架。这个完整的间谍框架由两个名为“东京”和“横滨”的包组成。它包括后门,加载器,协调器,C2通信器,录音机,键盘记录器,屏幕和网络摄像头抓取器,文档和加密密钥窃取程序,甚至是受害者…

    2022年9月21日
    45100
  • windows office365如何取消自动续费

    office365取消自动续费的方法: 1、首先进入office365,然后点击右上角的头像点击“我的Microsoft账户”。 2、然后在选项中点击“服务和订阅”。 3、点击office365下面的“管理”选项。 4、最后可以在帮助下方点击“停止自动续订或取消订阅”。 到此,关于“windows …

    2022年9月21日
    1.4K00
  • Vue前端怎么整合ElementUi

    Vue前端整合Element Ui Element UI 是一套采用 Vue 2.0 作为基础框架实现的组件库,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的组件库,提供了配套设计资源,帮助网站快速成型。 1.安装Element Ui组件库 WIN+R输入CMD(必须以管理员身份运行)…

    2022年9月21日
    43200
  • php二维数组如何求积

    求积步骤:1、定义一个变量并赋值1,语法“$cj=1;”;2、用foreach循环遍历外层数组元素,语法“foreach($arr as $v){//循环体代码}”;3、循环体中,用is_array()、array_product()和“*=”运算符求积即可,语法“if(is_array($v)){…

    2022年9月13日
    49500
  • Apache Shiro 1.2.4反序列化漏洞实例分析

    0x00 Apache Shiro 这个组件的漏洞很久之前就爆出来了,但是最近工作中又遇到了,刚好最近也在看Java反序列化的东西,所以决定拿出来再分析一下,期间也遇到了一些奇怪的问题。 网上的分析文章中大部分都是手动添加了commons-collections4-4.0的依赖,目的是为了使用yso…

    2022年9月16日
    57600
  • 电脑提示该内存不能为read如何解决

    电脑提示该内存不能为read的解决方法 1、打开运行窗口。 2、在运行窗口中输入命令cmd,回车确定。 2、将下面代码“for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1”复制粘贴到管理员窗口中。 4、点击回车键,等待程序运行结束。 以上就…

    2022年9月2日
    70700
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部