0
A
回答
4
那麼,要回答你的問題,這取決於。如果你正在做:
<p><?php echo htmlspecialchars($userInput); ?></p>
然後,他們將無法將腳本注入到您的應用程序。
無論其:
如果你想做到這一點:
<script>
var foo = '<?php echo htmlspecialchars($userInput); ?>';
</script>
您是不安全。請參閱OWASP's XSS Cheat Sheet上的規則3。
爲了保護這一點,您需要使用JS感知轉義函數。如果你只是需要一個字符串文字,你可以用json編碼它,但我會用PHP的ESAPI來處理這個問題。
0
2
按照manual以下字符被替換:
'&'
(符號)變成'&'
'"'
(雙引號)變得'"'
當沒有設置ENT_NOQUOTES
。"'"
(單引號)變得'''
僅當ENT_QUOTES
被設置。'<'
(小於)變得'<'
- '
>'
(大於)變得'>'
因此,一個<script>
標籤將被修改,但使用Javascript內部可以或可以不被修改,這取決於它包含哪些字符。
2
的PHP manual告訴你到底是什麼角色得到由功能而改變。
它不關心,如果你給它的字符串包含HTML或JS或別的東西。它只是在你給它的任何字符串上進行翻譯。
由於HTML和JS使用不同的轉義字符,它使任意的數據「安全」爲HTML中使用,其中包括使一些JS在HTML使用安全。
例如
$js = "if (foo && bar) { return false; }"
echo "<button onclick='" . htmlspecialchars($js) . "'>click</button>"
將輸出:
<button onclick='if (foo && bar) { return false; }'>click</button>
從而防止了特殊的含義&
具有從破壞腳本的HTML。
它不會讓一個字符串安全地在JavaScript中使用,雖然,因爲它不觸及字符,如\
具有特殊的意義存在。
相關問題
- 1. 我必須使用htmlspecialchars轉義所有輸出變量嗎?
- 2. htmlspecialchars將不會轉換報價
- 3. file_get_content(轉換爲htmlspecialchars)
- 4. 用htmlspecialchars不轉換
- 5. javascript json.stringify不會轉義?
- 6. htmlspecialchars()足夠安全嗎?
- 7. 內聯ckeditor需要htmlspecialchars嗎?
- 8. 正則表達式將htmlspecialchars轉義字符轉換回
- 9. 是htmlspecialchars足夠在HTTP響應中轉義XML元素內容嗎?
- 10. 將PHP的用htmlspecialchars()的JavaScript
- 11. htmlspecialchars
- 12. 使用htmlspecialchars()僅轉義單引號(僅留雙引號)
- 13. JavaScript的轉義//
- 14. 轉義JavaScript中
- 15. 將所有POST變量轉換爲htmlspecialchars
- 16. php htmlspecialchars
- 17. reverse htmlspecialchars
- 18. 在javascript中轉義/轉義html?
- 19. C#不會轉義「\」?
- 20. javascript轉義錯誤
- 21. Javascript轉義字符
- 22. Javascript window.open()轉義&符
- 23. 的Javascript \ X轉義
- 24. 用htmlspecialchars()和htmlspecialchars_decode()
- 25. htmlspecialchars輸出$ _POST
- 26. stripslashes_deep vs htmlspecialchars
- 27. PHP strip_tags plus htmlspecialchars
- 28. 處理htmlescape/htmlspecialchars
- 29. htmlspecialchars();不工作
- 30. 刪除htmlspecialchars?
那麼,函數不叫'jsspecialchars',是嗎? – BoltClock