XSS: Tạo một đối tượng javascript sử dụng json_encode của PHP
Điều này có an toàn 100% chống lại XSS không? Nếu không, bạn có thể cung cấp ví dụ về chuỗi văn bản xấu để cho tôi thấy tại sao nó lại không an toàn.
<html>
<body>
<script>
<?php
$bad = "some bad string. please give example text that makes the below unsafe";
echo "var a = ".json_encode($bad).";";
echo "var b = ".json_encode(array($bad)).";";
?>
</script>
</body>
</html>
Thanks.
Câu trả lời #1
Tóm lại, nó an toàn. XSS có thể xảy ra yêu cầu thoát khỏi chuỗi javascript (") hoặc script (</script>). Cả hai chuỗi đều được thoát đúng cách:
" becomes \"
</script> becomes <\/script>
Đây là phần về tiêm trực tiếp. Ứng dụng của bạn nên tính đến việc một số phần tử mảng có thể bị thiếu. Một khả năng khác là một phần tử mảng không phải loại mà bạn mong đợi (ví dụ, một mảng thay vì một chuỗi)
Câu trả lời #2
Chắc chắn là không!!!
Đừng sử dụng json_encode để thoát JavaScript.
ví dụ:
json_encode<img src=# onerror=alert(1)>, điều này sẽ không thoát gì và xuất ra trình duyệt. Đây là một XSS.
sử dụng htmlspecialchars thay vào đó.
