码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • NodeJS 防止xss攻击



    theme: smartblue

    持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情


    本文简介

    点赞 + 关注 + 收藏 = 学会了

    xss 是常见的攻击方式之一,不管是前端还是后端都要对此有所防范才行。

    本文主要讲解使用 NodeJS 开发的后端程序应该如何防范 xss 攻击。

    xss演示

    xss 攻击方式主要是在在页面展示内容中掺杂 js代码,以获取网页信息。

    常见的攻击地方有:

    1. 电商产品评价区:某用户提交的评价带有 可执行的js代码,其他用户查看该评论时就会执行那段 js代码。
    2. 博客网站:某用户在博客的标题或者内容中带有 可执行的JS代码 ,其他用户查看该博客时那段 js代码 就会被执行。

    比如在输入框输入

    ```

    ```

    别的用户在自己页面要展示上面这段内容个,页面有可能会弹出一个弹窗。

    这个例子只是弹出一个对话框,如果人家有恶意,获取 cookie 等信息,然后传给自己的服务器,那后果真的很严重。

    xss防御

    预防措施:转义特殊字符

    特殊符号转换

    ``` & -> & < -> <

    -> > " -> " ' -> ' / -> / ```

    上面我罗列了几个常见的特殊字符。从上面的例子可以看出,输入了 <script> 标签后,里面的内容有可能会被执行。

    如果我们把 <script> 改成 &lt;script&gt; 那么浏览器就不把这段内容看成是可执行代码。

    在日常开发中,我们不需要自己编写转义功能的代码,只需要下载 xss 的依赖包就行。

    安装 xss 依赖包

    npm install xss --save

    使用 xss 。xss 其实是一个方法,只需要把要转义的内容传入 xss 方法即可。

    ```js const xss = require('xss')

    const content = xss('

    最后输出

    &lt;script&gt;alert(1234)&lt;/script&gt;

    以上就是 xss攻击 在后端的防御方法。

    如果严谨一点的话,在前端也可以把文本域的内容里的特殊字符转义一遍再传给后端。

    后端传给前端的内容有可能会在页面展示成 &lt;script&gt;alert(1234)&lt;/script&gt; ,这部分需要前端自己去处理。

    插则花边新闻

    之前看到有则新闻说 Vue 不安全,某些ZF项目中使用 Vue 受到了 xss 攻击。后端甩锅给前端,前端甩锅给了 Vue 。

    后来听说是前端胡乱使用 v-html 渲染内容导致的,而 v-html 这东西官方文档也提示了有可能受到 xss 攻击。

    尤雨溪:很多人就是不看文档

    01.png

    推荐阅读

    👍《NodeJS mysql需要注意sql注入》

    👍《NodeJS 5分钟 连接MySQL 增删改查》

    👍《NodeJS Stream入门》

    👍《NodeJS 操作cookie》

    👍《NodeJS 5分钟 连接 Redis 读写操作》

  • 相关阅读:
    Notepad++ 的安装及配置
    电动化浪潮的助力中国汽车产业崛起
    Go学习笔记
    RabbitMQ 学习(七)-- 高级发布确认
    openvpn使用
    Ubuntu24.04下安装docker,并pull ubuntu22.04,然后编译安装vpp
    vue3实现表格数据导出Excel
    QT在release模式下用qInstallMessageHandler输出日志时函数名、行号等都是空的解决办法
    c++ 二分查找
    计算机毕业设计django基于python图书馆借阅系统(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/weixin_39415598/article/details/125425028
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号