1.SQL 注入

SQL 注入,一般是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。

SQL 注入示例

在登录界面,后端会根据用户输入的用户(username)和密码(password),到 MySQL 数据库中去验证用户的身份。

用户输入用户名【cedric】 , 密码【123456】,在后端处理时,会进行如下 sql 语句拼接,当验证用户名和密码成功后,即成功登录。

// 用户名为 cedric , 密码为 123456
select username from users where username='cedric' and password='123456';

但是,如果用户在输入框恶意输入用户名【cedric' -- 】(注意最后面有个空格)和随意一个错误的密码【111】,在后端处理时,会进行如下 sql 语句拼接,也会成功登录。

// 符号 ‘--’ 后面的语句相当于被注释了
select username from users where username='cedric -- ' and password='111';

或者,如果用户在输入框恶意输入用户名【cedric';delete from users; -- 】和随意一个错误的密码【111】,在后端处理时,会进行如下 sql 语句拼接,则结果会导致数据库中所有用户被删除。

// 符号 ‘--’ 后面的语句相当于被注释了
select username from users where username='cedric';delete from users; -- ' and password='111';

SQL 注入预防

Node 环境下,使用 mysql 的 escape 函数处理输入内容,就能将参数中的特殊字符进行转义。

在所有输入 sql 语句的地方,用 escape 函数处理一下即可, 例如:

const login = (username, password) => {

    // 预防 sql 注入
username = escape(username)
password = escape(password) const sql = `
select username from users where username=${username} and password=${password};
` // 然后按上面语句执行 sql 查询
···
}

2. XSS 攻击

XSS 是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码(代码包括HTML代码和客户端脚本)植入到提供给其它用户使用的页面中。

XSS 攻击示例

xss攻击主要是针对表单的 input/textarea 文本框发起的,比如在文本框中输入:

<script> alert(1) </script>

如果前端不进行过滤直接提交到后端(比如Node ),而服务端也没有进行过滤直接写入数据库库,那么在下一次(或其他用户)进入页面时,就会执行alert(1), 页面弹出 1 。

窃取网页中的cookie值

或者,文本框中恶意输入:

<script> alert(document.cookie) </script>

就可以获取用户 cookie 了。

劫持流量实现恶意跳转

文本框中恶意输入:

<script>window.location.href="www.abc.com";</script>

导致,所访问的网站就会自动跳转到 www.abc.com 了。

XSS 攻击预防

对用户输入的数据进行HTML Entity编码, 也就是对<script><a>等标签的< >进行转换,然后再保存到后台数据库。

Node环境下,安装:

$ npm install xss

然后修改:

const xss = require('xss')

const inputValue = content  // 未进行 xss 防御
const inputValue = xss(content) // 已进行 xss 防御

然后如果在 input 输入框 恶意输入 <script> alert(1) </script>, 就会被转换为下面的语句并存入数据库:

&lt;script&gt; alert(1) &lt;/script&gt;,已达到无法执行 <script> 的目的。

解决 SQL 注入和 XSS 攻击(Node.js 项目中)的更多相关文章

  1. Node.js 项目中解决 SQL 注入和 XSS 攻击

    1.SQL 注入 SQL 注入,一般是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令. SQL 注入示例 在登录界面,后端会根 ...

  2. PHP防止SQL注入和XSS攻击

    PHP防止SQL注入和XSS攻击PHP防范SQL注入是一个非常重要的安全手段.一个优秀的PHP程序员除了要能顺利的编写代码,还需要具备使程序处于安全环境下的能力.说到网站安全,就不得不提到SQL注入( ...

  3. 防止SQL注入和XSS攻击Filter

    nbsp;今天系统使用IBM的安全漏洞扫描工具扫描出一堆漏洞,下面的filter主要是解决防止SQL注入和XSS攻击 一个是Filter负责将请求的request包装一下. 一个是request包装器 ...

  4. SQL注入和XSS攻击

    SQL注入 定义:黑客通过在请求的数据中填入特殊字符,影响服务器数据库操作程序正常执行,从而达到攻击的目的. 形式: 拼接SQL: 登录验证:前台输入 username:yan password:12 ...

  5. yii框架各种防止sql注入,xss攻击,csrf攻击

    PHP中常用到的方法有: /*  防sql注入,xss攻击  (1)*/    function actionClean($str)    {        $str=trim($str);      ...

  6. 防止sql注入。xss攻击 方法

    //防止sql注入.xss攻击    /**     * 过滤参数     * @param string $str 接受的参数     * @return string     */    publ ...

  7. SQL 注入、XSS 攻击、CSRF 攻击

    SQL 注入.XSS 攻击.CSRF 攻击 SQL 注入 什么是 SQL 注入 SQL 注入,顾名思义就是通过注入 SQL 命令来进行攻击,更确切地说攻击者把 SQL 命令插入到 web 表单或请求参 ...

  8. Nginx 防止SQL注入、XSS攻击的实践配置方法

    下班的时候,发现博客访问缓慢,甚至出现504错误,通过 top -i 命令查看服务器负载发现负载数值飙升到3.2之多了,并且持续时间越来越频繁直至持续升高的趋势,还以为是被攻击了,对来访IP进行了阈值 ...

  9. 跨域、sql注入、xss攻击

    这几天遇到这三个问题,现在简单的记录下来. 1.跨域 如我服务器的域名是www.test1.com,我在另一个服务器www.test2.com通过ajax访问www.test1.com的数据时,就引起 ...

随机推荐

  1. 学习JDBC这一篇就够了

    配套资料,免费下载 链接: https://pan.baidu.com/s/1CKiwCbQV4FGg_4YMQoebkg 提取码: 7cn3 复制这段内容后打开百度网盘手机App,操作更方便哦 第一 ...

  2. [转]HashMap 和 currentHashMap 总结

    作者:浅蓝色的麻吉 https://www.jianshu.com/p/a7767e6ff2a2 1. 什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 1. ...

  3. 移动物体监控系统-sprint1声音报警子系统

    一.声卡驱动开发 1.1 声卡驱动架构 ——OSS开放式音频系统,声卡驱动中传统的OSS构架在02年被收购后即不开源,并且OSS的混音效果不好,因为产生了ALSA ——AlSA Linux系统高级音频 ...

  4. SmartDb代码修改

    在之前的一篇博客中介绍过SmartDB(https://blog.csdn.net/wuquan_1230/article/details/89145012),在使用的过程中发现一个问题,会造成内存泄 ...

  5. Python画各种 3D 图形Matplotlib库

    回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...

  6. UIAutomator环境Android8.0 环境异常解决

    个人PC环境 ANDROID_HOME:F:\1Study\Andriod\51zxw_2018-0102\Sdk ANT_HOME:D:\ant\apache-ant-1.10.5\ CLASSPA ...

  7. 大型Java进阶专题(十一) 深入理解JVM (下)

    前言 ​ 前面我们了解了JVM相关的理论知识,这章节主要从实战方面,去解读JVM. 类加载机制 ​ Java源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机把描述类的数据从 ...

  8. Eclipse开发Android项目报错解决方案详细教程,最新版一篇就够了!

    本文记录刚接触Android开发搭建环境后新建工程各种可能的报错,并亲身经历漫长的解决过程(╥╯^╰╥),寻找各种偏方,避免大家采坑,希望能帮助到大家. 报错信息 出错一:The import and ...

  9. Hyperledger Fabric 部署

    Hyperledger Fabric 部署 Hyperledger Fabric需要使用Docker.Go环境. Docker环境安装 Docker环境安装 直接查看这一篇,安装好之后将当前用户非ro ...

  10. Jdk1.8下的HashMap源码分析

    目录结构 一.面试常见问题 二.基本常量属性 三.构造方法 四.节点结构        4.1 Node类        4.2.TreeNode 五.put方法        5.1 key的has ...