簡體   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