2011-08-26 45 views
2

我有一個表格,用戶可以輸入任何HTML。通用方式來逃避行情在JavaScript變量

var title = "Cool <a href="http://google.com">Check This</a>" 

正如你所看到的,變量是有",但它也可以'。它會導致一個錯誤,如果有"。有什麼更好的方法來解決這個問題?在下面的數據庫中存儲轉義的字符串?

$title = str_replace('"', "'", $_REQUEST['title']); // Replace double quote with single quote as js variable above is wrapped with double quotes. 

或者在頁面上顯示之前轉義它? jQuery中的任何東西都可以在這裏幫助逃生?

+0

'title.replace(「\」「,」「);'? – escproxy

+0

@Alex:這是錯誤的,如果你有像''被轉換成'<跨度標題=該鏈接指向真棒東西>'至於結果,只有'This'會出現徘徊的文字後 – xfix

回答

2
var title="Cool <a href=\"http://google.com\">Check This</a>" 

那麼,你不能使用JavaScript來逃避它,因爲JavaScript需要看到你想要逃脫的東西,並且你想逃避它。如果你使用PHP,你可以使用addslashes()插入的JavaScript之前。

不管怎麼說,你要小心,允許插入任何HTML的。誤服轉義的HTML(如允許插入<script>)可以允許做各種危險的東西,像偷所有Cookie。

+1

'htmlspecialchars'是好得多 – escproxy

+0

@Alex:。Uhmmm ......這不是問題。問題是,值包含'「'其用於存儲它。 '用htmlspecialchars()'將取代'「'和'"'和'<'和''<製作HTML無法使用 – xfix

+0

然後使用'htmlspecialchars_decode();'我希望,也暗示了什麼?。 – escproxy