簡體   English   中英

如何在JavaScript中定義可以包含任何字符的字符串?

[英]How do you define a string in JavaScript that could contain any character?

即使我在JavaScript中使用Salesforce變量,也不必知道Salesforce即可回答我的問題。 我想訪問一個密碼字段。 我可以通過在JavaScript中使用Salesforce變量{!Account.Password__c}來做到這一點,如下所示:

var p = '{!Account.Password__c}';

我已經使用了很長時間,但是在某些情況下它不起作用。 唯一的問題是密碼可以包含任何字符(就像一個好的密碼一樣)。 因此,如果其中包含單引號,則此JavaScript將無法運行。 我可以用雙引號將其寫成:

var p = "{!Account.Password__c}";

但是它也可以包含雙引號。 它還可以包含正斜杠和/或反斜杠。

密碼字符串必須能夠采用以下任何一種:
Idon'tknow
pass"word"
/-\\_|)_/-\\_/\\/\\
"'!@#
+*co/rn

這是我的代碼:

var u = '{!Account.Email_Address__c}';
var p = escape(encodeURIComponent('{!Account.Password__c}'));
window.open('http://mywebsite.com/?&u=' + u + '&p=' + p,'_blank');

您正在尋找的是JSENCODE函數。 它將轉義引號,反斜杠以及其他可能弄亂Javascript字符串的東西。

var p = '{!JSENCODE(Account.Password__c)}';

如果您的Javascript在HTML標記內(例如,在'onclick'屬性中),則使用JSINHTMLENCODE函數,它將對字符<&>進行html編碼。

這些內容記錄在Visualforce函數參考中。

您的問題是轉義。 您可以反斜杠字符串中的任何字符-因此,如果您擁有owowow"'!thisishard作為密碼,可以直接將其分配給JS var,則可以這樣做:

var p = "owowow\"\'!thisishard";

其中涉及轉義。 不需要做這個,如果你已經獲得來自其他來源的變量(比如,通過文本元素element.value )。

這不會解決幾個問題:

  1. 通過GET PARAMS傳遞密碼是對的事情不要做OWASP准則相當高了。 原因是它們除了可以通過常規方式進行監聽之外,還將顯示在服務器日志中。
  2. 你到底為什么要這樣做?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM