繁体   English   中英

如何获取ASP.net变量的值到JavaScript文本框中

[英]How to get the value of an ASP.net variable into a javascript textbox

我正在为ASP.net页面编写一些Javascript代码。

我已将字符串“ foo”分配给字符串变量myString

我想将myString的值分配给一个JavaScript变量,所以我用ASP.net代码编写:

<script type='txt/javascript' language='javascript'>
    var stringFromDotNet = '<%=myString%>';
</script>

只要myString不包含引号或换行符,此方法就可以正常工作,但是,一旦我尝试分配带引号或换行符的东西,所有地狱便会松散,我的代码将无法正常工作。 实际上,我可以看到此代码易受各种注入攻击的攻击。

那么...我该如何获取分配给JavaScript中变量的myString的值?

: I've tried creating a page with just an ASP:Hidden field. :我尝试创建仅包含ASP:Hidden字段的页面。 看起来其中的值是html编码的。

您可以使用JavaScriptSerializer ,并且保证可以安全地抵御XSS:

<script type="text/javascript">
    var stringFromDotNet = <%= new JavaScriptSerializer().Serialize(myString) %>;
</script>

这种方法还允许您传递复杂的对象,而不仅仅是纯字符串:

<script type="text/javascript">
    var complexObjectFromDotNet = <%= new JavaScriptSerializer().Serialize(new { id = 123, name = "foo\"' <bar>" }) %>;
    alert(complexObjectFromDotNet.name);
</script>

我认为这可能是寻找答案的地方: http : //www.velocityreviews.com/forums/t70655-escape-function-in-asp-net.html#edit352659 基本上,在服务器端对值进行编码,然后使用JavaScript对其取消编码:

var stringFromDotNet = decodeURI(<%=Server.URLEncode(myString)%>);

这将确保引号和其他危险字符不会破坏您的脚本或打开攻击载体。

您可以像这样使用双引号分配js变量

var stringFromDotNet = "<%=myString%>";

或者,您可以在服务器端的字符串中转义单引号并将换行符替换为文字“ \\ r \\ n”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM