前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你看不懂的JavaScript(Non alphanumeric JavaScript)

你看不懂的JavaScript(Non alphanumeric JavaScript)

作者头像
用户7293182
发布2022-01-20 14:12:24
4230
发布2022-01-20 14:12:24
举报
文章被收录于专栏:jQuery每日经典

前端工程师们注意啦,尤其是做网站安全的工程师。想必XSS都耳熟能详了吧,即使不知道这具体是什么,也听过它,它可是和DDoS齐名的攻击手段。

What do you know about non-alphanumeric XSS?

Non alphanumeric JavaScript(非字母数字的JS)

一、是什么

非字母数字JS,顾名思义,就是不包含字母或者数字的JavaScript。那除了字母和数字的字符还有些什么呢?

这里拿(“索引非字母数字字符Indexing non-alphanumeric characters”)中的概念来说:

  • 被认为是标点符号的非字母数字字符被视为空格。在多字搜索中,用标点符号分隔的单词,词序保留为短语搜索。 以下字符被认为是标点符号:!@#&() - [{}]:; ',?/ *
  • 被认为是符号的非字母数字字符也被视为空格。但是,与标点符号字符不同,它们不会在多字搜索中保留字顺序。如果符号字符与标点符号相邻,则忽略符号字符。也就是说,符号字符和标点符号的组合仅与标点符号相同。例如,搜索 ‘ice cream’ 将返回与搜索“ice~cream”相同的结果,而搜索“ ice-~cream”将返回相同的结果。 符号字符包括以下内容:`〜$ ^ + = <>“

二、现成的工具

那这些字符在 JavaScript 能工作吗?是如何工作的呢?

阿根廷的程序员Patricio Palladino 发布过一款工具,可以将JavaScript 代码转为 ()[]{}!+ 字符。

网站地址:

http://patriciopalladino.com/files/hieroglyphy/

将转化为 String 的代码复制在浏览器控制台:

三、工作原理

这里只是给出其中的一种实现方式,实现的方法有很多种

  1. 数字numbers

0

"+[]",

1

"+!![]",

2

"!+[]+!![]",

3

"!+[]+!![]+!![]",

4

"!+[]+!![]+!![]+!![]",

5

"!+[]+!![]+!![]+!![]+!![]",

6

"!+[]+!![]+!![]+!![]+!![]+!![]",

7

"!+[]+!![]+!![]+!![]+!![]+!![]+!![]",

8

"!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]",

9

"!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]"

2. 关键字

_object_Object = "[]+{}";

_NaN = "+{}+[]";

_true = "!![]+[]";

_false = "![]+[]";

_undefined = "[][[]]+[]";

3. 字母

characters[" "] = "(" + _object_Object + ")[" + numbers[7] + "]";

characters["["] = "(" + _object_Object + ")[" + numbers[0] + "]";

characters["]"] = "(" + _object_Object + ")[" + characters[1] + "+" +

characters[4] + "]";

characters["a"] = "(" + _NaN + ")[" + numbers[1] + "]";

characters["b"] = "(" + _object_Object + ")[" + numbers[2] + "]";

characters["c"] = "(" + _object_Object + ")[" + numbers[5] + "]";

characters["d"] = "(" + _undefined + ")[" + numbers[2] + "]";

characters["e"] = "(" + _undefined + ")[" + numbers[3] + "]";

(想了解更多的可以在GitHub上查找,或者直接联系我)

根据上面的对照表就可以实现自己想要的字符串了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 jQuery每日经典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Non alphanumeric JavaScript(非字母数字的JS)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档