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> 的目的。

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

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

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

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

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

  3. SQL注入和XSS攻击

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

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

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

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

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

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

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

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

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

  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. 破解NFC卡

    目录 概念 各种卡 IC卡存储器结构 破解工具 破解NFC卡 概念 各种卡 ID卡 工作在低频(125Khz) ID卡 特点 EM4XX系列,多为EM4100/EM4102卡 常用的固化ID卡,出厂固 ...

  2. SNF-软件开发机器人-免费-火爆登场-程序下载及实战配套教程免费发放

    软件开发机器人不辱使命的完成了在软件开发方面的方式方法,颠覆了传统开发,可零编程开发软件,也可二开更强大功能. 为了更好的了解和理解软件开发机器人我们以模拟用友u8系统部分供应链程序为例进行模拟. 联 ...

  3. 利用c# 多屏显示

    公司搞了一个电视墙,要显示不同内容,于是买了一个多接口显卡(现在看来这个方案不是太好,但非常省钱) 要打开的就是几个网页,但要自己手工拖到不同电视上,非常麻烦 于是查了一下资料,发现可以用代码实现,说 ...

  4. 升级到11.2.0.4后用srvctl无法启用数据库实例,报CRS-0254: authorization failure

    在standby database上从11.2.0.3升级11.2.0.4,然后打了补丁PATCH SET UPDATE 11.2.0.4.190115后,无法用srvctl启动第二个节点数据库实例: ...

  5. 自定义MyBatis

    自定义MyBatis是为了深入了解MyBatis的原理 主要的调用是这样的: //1.读取配置文件 InputStream in = Resources.getResourceAsStream(&qu ...

  6. 最新 多点Dmalljava校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.多点Dmall等10家互联网公司的校招Offer,因为某些自身原因最终选择了多点Dmall.6.7月主要是做系统复习.项目复 ...

  7. 手把手教你创建electron+vue项目

    electron可以结合前端的很多框架来进行快速的开发.在这里只讲一种electron结合vue并且使用前端的elementui来快速搭建一个项目页面. 第一步.创建electron 以管理员身份运行 ...

  8. [转帖]【ZOOKEEPER系列】Paxos、Raft、ZAB

    [ZOOKEEPER系列]Paxos.Raft.ZAB 2018-07-11 12:09:49 wangzy-nice 阅读数 2428更多 分类专栏: zookeeper   版权声明:本文为博主原 ...

  9. javaSE总结(二)--java面向对象

    一.类和对象 (1)类 [修饰符] class 类名{ //修饰符1:private public protected 三个最多出现其一 //修饰符2:abstract final 两个最多出现其一 ...

  10. 手写MVC框架(一)-再出发

    背景 前段时间把之前写的DAO框架(手写DAO框架(一)-从“1”开始)整理了一下,重构了一版.整理过程中看以前写的代码,只是为了了解实现,只是为了实现,代码写的有点粗糙.既然已经整理了DAO框架,索 ...