[英]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.