- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
"吗?-6ren"> "吗?-有时,服务器端会生成要嵌入到内联 JavaScript 代码中的字符串。例如,如果“UserName”应该由 ASP.NET 生成。然后看起来像。 var username = ""; 这是-6ren">
有时,服务器端会生成要嵌入到内联 JavaScript 代码中的字符串。例如,如果“UserName”应该由 ASP.NET 生成。然后看起来像。
<script>
var username = "<%UserName%>";
</script>
这是不安全的,因为用户可以拥有他/她的名字
</script><script>alert('bug')</script></script>
这是XSS漏洞。
所以,基本上,代码应该是:
<script>
var username = "<% JavascriptEncode(UserName)%>";
</script>
JavascriptEncode 的作用是在“/”和“'”和“”之前添加字符“\”。因此,输出的 html 是这样的。 var username = "</script>alert(\'bug\')</script></script>";
浏览器不会将“</script>”解释为脚本 block 的结尾。因此,避免了 XSS。
但是,那里仍然有“<”和“>”。建议也对这两个字符进行转义。首先,我不认为将“<”更改为“<”是个好主意。和“>”到“>”这里。而且,我不确定将“<”更改为“\<”和将“>”更改为“\>”是否对所有浏览器都是可识别的。似乎没有必要对“<”和“>”做进一步的编码。
对此有什么建议吗?
谢谢。
最佳答案
根据您使用的标记语言,问题有不同的答案。
如果您使用的是 HTML,则不得使用实体表示它们,因为脚本元素被标记为包含 CDATA。
如果您正在使用 XHTML,那么您可以将它们表示为带有显式 CDATA 标记的 CDATA,或者您可以使用实体表示它们。
如果您正在使用 XHTML,但将其作为 text/html 提供,那么您需要编写一些符合 XHTML 规则但仍可用于 text/html 解析器的内容。这通常意味着使用明确的 CDATA 标记并在 JavaScript 中将其注释掉。
<script type="text/javascript">
// <![CDATA[
…
// ]]>
</script>
不久前,我写了一些关于 the hows and whys of this 的文章.
关于javascript - javascript字符串需要 "escape"字符 "<"和 ">"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/779959/
一个简单的GNU m4问题,但是我找不到正确的答案。我想在代码部分的开始/结束处打印一个markdown header : ``` echo Hello ``` 如何创建包含3个反引号的GNU M4宏
我有一个 shell 变量(我们将调用 x),其中包含一个带有 shell 元字符的字符串。例如,我可能有 abc "def's" ghi 设置为 x='abc "def'\''s" ghi'
我有一个 shell 变量(我们将调用 x),其中包含一个带有 shell 元字符的字符串。例如,我可能有 abc "def's" ghi 设置为 x='abc "def'\''s" ghi'
执行以下行时: df = df[df['Directory'].str.contains("C:\Windows\System32\Tasks")] 我收到以下错误: File "/Users/pat
我正在使用 python-social-auth 从我的 Django 应用程序登录社交网络。在我的本地机器上一切正常,但是当我部署到服务器时出现以下错误: oauthlib.oauth1.rfc58
URI.escape 和 CGI.escape 有什么区别,我应该使用哪一个? 最佳答案 斧头和剑有什么区别,我应该使用哪一种?好吧,这取决于您需要做什么。 URI.escape 应该将字符串 (UR
我今天安装了 Zenwalk Linux。我发现 Escape 键没有绑定(bind)到任何东西(至少据我所知),而是 Escape 通常会做什么(关闭程序,打开 vim 命令行等)Shift-Esc
我遇到过一种情况,闭包可能在函数 f1 内部调用(闭包被传递到其中),或者可能会传递给其他函数 f2 >。 所以现在我想知道应该如何定义这个闭包的转义行为。我的意思是我应该放 @escaping 还是
在 js/jQuery 中有没有办法拥有这两种按键组合? ESCape 键 和 SHIFT + ESCape 键 当我实现它时使用: document.onkeydown = function(e){
我正在尝试将字符串中的任何换行符或转义换行符规范化为转义的 unix 换行符。我不明白为什么这不起作用: Pattern EOL = Pattern.compile("(\\\\r)?\\\\n|\r
swift 4.2,Xcode 10.1 在我正在处理的订单处理应用程序中,用户可以搜索已处理或提交的订单。发生这种情况时,它将检查是否有订单缓存,如果没有,它将使用异步 API 请求重新填充该缓存,
我的几个网页名称中包含以下字符&,例如“Shipping & Deliveries”等 我的架构标记注入(inject)了 GTM (JSON-LD),但在 SDTT 中我收到以下错误: Uncate
自版本 1.9.0 起,Twig为 escape 过滤器提供 html_attr 策略(参见 documentation )。 html 策略使用 htmlspecialchars PHP 函数(通过
我有一个像这样的 View Controller : class PublicationListViewController: UIViewController { var publicati
这是我的代码: class Main { init() { let x = Sub(s: foo) } func foo(completion: @escapi
我正在尝试将闭包用于一阶谓词演算,并且我打算定义以下函数: func ASSUM(p: @escaping Pred) -> (Pred) -> Pred { return { q in AN
我有关于 ezSQL_mysql 和 ezSQLcore 的问题,它可能是 PHP 版本不兼容,我分享下面的代码。我应该使用什么版本的 PHP 或者我应该做什么来定制 mysqli? (我的PHP版本
我有以下函数,其中有完成处理程序,但出现此错误: Closure use of non-escaping parameter may allow it to escape 这是我的代码: func m
我正在使用 Swift-VectorBoolean 库,它目前在 Swift 3.2 上,尚未针对 Swift 4.2 进行更新,但应该仍可在 Xcode 10 上运行。在 Xcode 9 上运行它,
我想用这个 ansible 命令在 nrpe.cfg 中插入一个 nrpe 命令 check_tomcat_threads.pl -H localhost -p 30011 -C '"http-bio
我是一名优秀的程序员,十分优秀!