- 主题:向页面里输出json的时候,这种情况一般怎么处理 (转载)
【 以下文字转载自 Java 讨论区 】
发信人: sayinger (言者), 信区: Java
标 题: 向页面里输出json的时候,这种情况一般怎么处理
发信站: 水木社区 (Fri Sep 10 19:10:43 2010), 站内
比方说要输出:
<script>
var xxx = { name: "text" };
</script>
对于name的值,一般来说按照ecma的标准做转义就可以,大部分json库都能处理。
但我们都知道在页面里,浏览器会优先解析<script>,那么如果name里出现"</script>"就会截断js,这就出现了注入的可能。
如何处理这种问题呢?毕竟在js看来,"</script>"是完全合法的字符串。
--
FROM 202.106.68.*
试下用\u+Unicode编码来替代字符串中的</script>
【 在 sayinger (言者) 的大作中提到: 】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: sayinger (言者), 信区: Java
: 标 题: 向页面里输出json的时候,这种情况一般怎么处理
: ...................
--
FROM 220.199.71.*
的确是个不错的办法,只是有没有效率更高点的呢
【 在 happyhippy (冷暖自知) 的大作中提到: 】
: 试下用\u+Unicode编码来替代字符串中的</script>
--
修改:sayinger FROM 202.106.68.*
FROM 202.106.68.*
<script>
var xxx = { name: "</script>" };
</script>
这样是合法的吧
【 在 sayinger (言者) 的大作中提到: 】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: sayinger (言者), 信区: Java
: 标 题: 向页面里输出json的时候,这种情况一般怎么处理
: 发信站: 水木社区 (Fri Sep 10 19:10:43 2010), 站内
: 比方说要输出:
: <script>
: var xxx = { name: "text" };
: </script>
: 对于name的值,一般来说按照ecma的标准做转义就可以,大部分json库都能处理。
: 但我们都知道在页面里,浏览器会优先解析<script>,那么如果name里出现"</script>"就会截断js,这就出现了注入的可能。
: 如何处理这种问题呢?毕竟在js看来,"</script>"是完全合法的字符串。
--
FROM 221.133.229.*
会被截断,你可以试试
【 在 PiscesGold (MD5 加密过的昵称) 的大作中提到: 】
: <script>
: var xxx = { name: "</script>" };
: </script>
: ...................
--
FROM 180.77.84.*
浏览器会截断的,因为浏览器解析token的时候不知道当前应该按照js处理。
【 在 PiscesGold (MD5 加密过的昵称) 的大作中提到: 】
: <script>
: var xxx = { name: "</script>" };
: </script>
: ...................
--
FROM 159.226.43.*
看来只能这样了,把'<'都替换成'\u003c'...
【 在 happyhippy (冷暖自知) 的大作中提到: 】
: 试下用\u+Unicode编码来替代字符串中的</script>
--
FROM 180.77.84.*
转义,将/用\/替代。eval之后,\/会解析为/的
【 在 sayinger (言者) 的大作中提到: 】
: 【 以下文字转载自 Java 讨论区 】
: 发信人: sayinger (言者), 信区: Java
: 标 题: 向页面里输出json的时候,这种情况一般怎么处理
: ...................
--
FROM 221.221.28.*
哈哈,这个貌似更好些
【 在 hence (真的爱你) 的大作中提到: 】
: 转义,将/用\/替代。eval之后,\/会解析为/的
--
FROM 180.77.84.*
URI编码后输出
然后在js里用decodeURIComponent解了再用
【 在 sayinger (言者) 的大作中提到: 】
: 发信人: sayinger (言者), 信区: Java
: 标 题: 向页面里输出json的时候,这种情况一般怎么处理
: 发信站: 水木社区 (Fri Sep 10 19:10:43 2010), 站内
: ...................
--
FROM 123.125.228.*