当前位置: 首页 > 面试题库 >

Javascript XSS预防

柳翼
2023-03-14
问题内容

有一个Node.js项目用于清理数据,还有一个用于JavaScript的OWASP库,用于处理清理过程以防止XSS。

我一直在对这些库进行基准测试,它们非常密集,也许是一个过大的杀伤力,我的应用程序不需要任何动态HTML(由用户,bbtags提交,甚至根本不需要,都不需要),所以为什么不这样做呢:

  1. 禁用“ <”和“ >”字符,不要替换它们或其他任何东西,只需禁用它们,如果用户提交了这些,则警告他们已禁用这些字符(客户端和服务器端验证)
  2. & => &amp;
  3. " => &quot;
  4. ' => &#x27;
  5. / => /
  6. 编码提交的URL(GET参数等)
  7. 由于基于DOM的XSS,因为我的应用程序使用HTML5 PushState,并且后端与前端完全分开,所以可以使用。

就像我说的那样,这足以保护我自己了,我的应用程序不需要用户提交的任何HTML,因此我根本不需要<and >标签。

感谢您的所有反馈,这就是我现在使用的:

var pattern = /<(.*)>/;

function hasHtmlTags(string) {
    return pattern.test(string);
};

if (hasHtmlTags(userData)) {
    // Do something?
} else {
    // Create entity.
}

因此用户仍然可以使用表情符号:<等,并且仅在找到<和>的组合时才触发该函数。因此,没有昂贵的正则表达式之类的东西,只需禁用<和>即可,我们应该没事。


问题答案:

这是一个通用的编码过程:

var lt = /</g, 
    gt = />/g, 
    ap = /'/g, 
    ic = /"/g;
value = value.toString().replace(lt, "&lt;").replace(gt, "&gt;").replace(ap, "&#39;").replace(ic, "&#34;");

如果您的用户未向服务器提交任何内容,则您甚至不需要以上内容。如果用户提交并且您正在使用用户输入,那么以上内容应该是安全的。只要全局清洁了<<和’>’,并且括号也不错,那么您就可以开始使用。



 类似资料:
  • 主要内容:1.相互排斥,2.保持并等待,4.循环等待如果我们用一个站在四条腿上的桌子来模拟死锁,那么也可以用同时发生的四个条件来模拟四条腿,导致死锁。 但是,如果我们破坏桌子的一条腿,那么桌子肯定会掉下来。如果能够违反四种必要条件之一并且不让它们一起出现,那么就可以防止死锁,这同样发生在死锁上。 下面来看看如何防止每个条件的发生。 1.相互排斥 从资源的角度看,相互关联的部分是资源永远不能同时被多个进程使用,这是公平的,但这是造成死锁的主要原因。如

  • 通过 runApp 方法运行的 Web 应用,可通过 rax-pwa 提供的 preload 和 prerender 方法优化用户体验。 $npm i rax-pwa --save 预加载 预加载资源可以帮助页面更快速的渲染。 可通过 preload 来进行预加载。仅对 Web App 有效。 import { createElement } from 'rax'; import { preloa

  • 在企业中,运营、市场人员都会有持续关注的数据指标,但,当这些数据指标波动较大,发生异常数据时,需要及时的关注。 为此,诸葛io面向运营、市场人员推出了「预警」功能,可以对关键、核心的数据指标进行监控,当满足预先设置好的阈值后,通过微信服务号第一时间发送通知。 功能及使用 1.创建预警 你可以对新增用户、活跃用户以及关键行为节点转化等数据指标创建预警进行监控,当满足预先设置好的阈值后,发送告警通知。

  • New in version 0.60. 本篇预检会协助你准备运行 ceph-deploy 的节点、和服务器节点,以使用无密码 ssh 和 sudo 。 通过 ceph-deploy 部署 Ceph 前,先要在管理节点和运行 Ceph 守护进程的节点上确认一些事情。 选装一个操作系统 在各节点安装最新发布的 Debian 或 Ubuntu (如 12.04 LTS 、 14.04 LTS ),关于

  • 预设是插件和主题的集合。 使用预设 预设(preset)通常是一个 npm 软件包,因此你可以像安装其他软件包一样使用 npm 安装它们。 npm Yarn npm install --save docusaurus-preset-name yarn add docusaurus-preset-name 然后,在站点的 docusaurus.config.js 配置文件中的 presets

  • 我的问题是关于Sybase ASE 15.3版本数据库的。当外包数据库专业人员检查我们的数据库进行安全控制时,他们注意到问题: “请注意,您的数据库中未建立限制数据库中DDL命令的DDL_PREVENT trigger control。只允许数据库管理员帐户和部署应用程序帐户(如TCDEPLOY)在trigger中执行DDL命令。” 我知道“Oracle或MSSQL中有DLL_阻止机制”。Syba