2014-05-15 31 views
-3

設想一個用戶輸入以下到一種形式:瀏覽器如何處理引號(單,雙)作爲表單的輸入?

I'd like to "eat" something. 

短語包含一個單一'和兩個"的。如果我direcly寫這篇文章的JS字符串我不得不逃離',以防止我的字符串從早期的終止:

var phrase = 'I\'d like to "eat" something' 

什麼是瀏覽器的行爲,當用戶(或潛在的惡意演員)將'"輸入到表單中並將其保存到var?角色會自動逃脫嗎?

編輯16/04/14:重寫了這個問題。

+6

也許。嘗試。它。出來嗎? – PeeHaa

+0

在腳本文件中寫入字符串時,您只需將其轉義即可。例如,在您喜歡的瀏覽器的控制檯中嘗試console.log('我想'吃東西') – Nick

+3

@YoshuaWuyts考慮到您只需將所有這些字符輸入到表單中以輸入此問題,然後發佈它,顯然這不是災難性的。 –

回答

1

它運行任何需要的內部代碼才能在UI中顯示輸入的數據。

如果您通過JS和DOM訪問數據,那麼它將爲您提供一個數據結構(字符串),其中包含數據中表示的字符。

如果您提交表單,它將對數據進行編碼(根據表單元素中enctype屬性指定的編碼),並將其放入HTTP請求中。


你需要擔心有特殊含義的字符轉義當你寫的代碼,因爲某些字符在代碼特殊的意義。除非您開始將其視爲代碼(例如,通過eval或將其與其他代碼(如SQL或HTML)混合並將其放置在將解析該代碼的地方),否則用戶輸入不具有特殊含義(例如通過eval或其他代碼如將其發送到數據庫服務器或將其放入HTTP響應中))。

0

在窗體中輸入它並不是問題。當它被髮送到服務器時,它將被瀏覽器自動編碼。一個問題是有有這樣的HTML源代碼中的默認值:

<input type="text" value="I&#39;d like to &quot;eat&quot; something"/> 

這些值必須被編碼爲它不會破壞HTML。

+0

s/break HTML /引入XSS – PeeHaa

+0

是的,在生成的頁面中擁有用戶生成的內容是一個巨大的風險。你必須小心 – koenpeters

相關問題