Làm cách nào để kiểm tra xem một chuỗi có được mã hóa bằng html không?

I seriously underestimated the importance of setlocale...
$strings = array(
    "mais coisas a pensar sobre diário ou dois!",
    "plus de choses à penser à journalier ou à deux !",
    "¡más cosas a pensar en diario o dos!",
    "più cose da pensare circa giornaliere o due!",
    "flere ting å tenke på hver dag eller to!",
    "Další věcí, přemýšlet o každý den nebo dva!",
    "mehr über Spaß spät schönen",
    "më vonë gjatë fun bukur",
    "több mint szórakozás késő csodálatos kenyér"
);

$convert = array();
setlocale(LC_CTYPE, 'de_DE.UTF-8');
foreach( $strings as $string )
        $convert[] = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $string);
?>

Produces the following:

Array
(
    [0] => mais coisas a pensar sobre diario ou dois!
    [1] => plus de choses a penser a journalier ou a deux !
    [2] => ?mas cosas a pensar en diario o dos!
    [3] => piu cose da pensare circa giornaliere o due!
    [4] => flere ting aa tenke paa hver dag eller to!
    [5] => Dalsi veci, premyslet o kazdy den nebo dva!
    [6] => mehr ueber Spass spaet schoenen
    [7] => me vone gjate fun bukur
    [8] => toebb mint szorakozas keso csodalatos kenyer
)

whereas

________số 8_______

produces:
Array
(
    [0] => mais coisas a pensar sobre di?rio ou dois!
    [1] => plus de choses ? penser ? journalier ou ? deux !
    [2] => ?m?s cosas a pensar en diario o dos!
    [3] => pi? cose da pensare circa giornaliere o due!
    [4] => flere ting ? tenke p? hver dag eller to!
    [5] => Dal?? v?c?, p?em??let o ka?d? den nebo dva!
    [6] => mehr ?ber Spass sp?t sch?nen
    [7] => m? von? gjat? fun bukur
    [8] => t?bb mint sz?rakoz?s k?s? csod?latos keny?r
)

This might be of interest when trying to convert utf-8 strings into ASCII suitable for URL's, and such. this was never obvious for me since I've used locales for us and nl.

if your goal is just to protect your page from Cross Site Scripting (XSS) attack, or just to show HTML tags on a web page (showing on the page, for example), then using htmlspecialchars() is good enough and better than using htmlentities().  A minor point is htmlspecialchars() is faster than htmlentities().  A more important point is, when we use  htmlspecialchars($s) in our code, it is automatically compatible with UTF-8 string.  Otherwise, if we use htmlentities($s), and there happens to be foreign characters in the string $s in UTF-8 encoding, then htmlentities() is going to mess it up, as it modifies the byte 0x80 to 0xFF in the string to entities like é.  (unless you specifically provide a second argument and a third argument to htmlentities(), with the third argument being "UTF-8").

The reason htmlspecialchars($s) already works with UTF-8 string is that, it changes bytes that are in the range 0x00 to 0x7F to < etc, while leaving bytes in the range 0x80 to 0xFF unchanged.  We may wonder whether htmlspecialchars() may accidentally change any byte in a 2 to 4 byte UTF-8 character to < etc.  The answer is, it won't.  When a UTF-8 character is 2 to 4 bytes long, all the bytes in this character is in the 0x80 to 0xFF range. None can be in the 0x00 to 0x7F range.  When a UTF-8 character is 1 byte long, it is just the same as ASCII, which is 7 bit, from 0x00 to 0x7F.  As a result, when a UTF-8 character is 1 byte long, htmlspecialchars($s) will do its job, and when the UTF-8 character is 2 to 4 bytes long, htmlspecialchars($s) will just pass those bytes unchanged.  So htmlspecialchars($s) will do the same job no matter whether $s is in ASCII, ISO-8859-1 (Latin-1), or UTF-8.

Hướng dẫn này cung cấp một số phương pháp được sử dụng để mã hóa HTML một chuỗi không có lỗ hổng XSS

Đây là một ví dụ bằng cách nào đó làm giảm cơ hội XSS



  
    Title of the document
  
  
    
    
    
  

Trên hàm htmlEncode, văn bản bên trong của phần tử được đặt và mã hóa bên trongHTML được truy xuất. Giá trị của phần tử được đặt trên hàm htmlDecode, văn bản bên trong được truy xuất

Trong mã html sau, chúng tôi sử dụng các chức năng mà chúng tôi đã xác định để chuyển đổi đầu vào của người dùng trong vùng văn bản và mã hóa nó để ngăn XSS



  
    
    Convert
    
Encoding in URL:
Encoding in HTML:

Phương pháp này sẽ hoạt động tốt trong nhiều trường hợp, nhưng trong một số trường hợp, bạn sẽ gặp phải lỗ hổng XSS

Đối với chức năng trên, hãy xem xét chuỗi sau

htmlDecode("");

Chuỗi chứa một thẻ HTML chưa thoát, do đó, thay vì giải mã, hàm htmlDecode sẽ chạy mã JavaScript được chỉ định bên trong chuỗi. Để tránh điều này, bạn có thể sử dụng DOMParser được hỗ trợ trong tất cả các trình duyệt chính

Làm cách nào để kiểm tra xem một chuỗi có được mã hóa bằng html không?
Javascript giải mã HTML

function htmlDecode(input) { let doc = new DOMParser(). parseFromString(input, "text/html"); . tài liệuElement. văn bảnNội dung; . jpg'>")); // "

Làm cách nào để kiểm tra xem một chuỗi có được mã hóa bằng html không?
" cảnh báo(htmlDecode("")); // ""

Chức năng này sẽ không chạy bất kỳ mã JavaScript nào dưới dạng tác dụng phụ. Mọi thẻ HTML sẽ bị bỏ qua vì chỉ nội dung văn bản sẽ được trả về

Một phương pháp hữu ích và nhanh chóng khác tồn tại cũng mã hóa dấu ngoặc kép

Để thoát dấu gạch chéo về phía trước/vì mục đích an toàn chống XSS, hãy sử dụng như sau

Phương thức RegExp thay thế chuỗi đã chỉ định bằng một chuỗi khác. Phương thức này nhận hai tham số, tham số đầu tiên là chuỗi cần được thay thế và tham số thứ hai là chuỗi thay thế từ chuỗi đầu tiên. Chuỗi thứ hai có thể được cung cấp một chuỗi rỗng để văn bản được thay thế bị xóa

Làm cách nào để kiểm tra xem một chuỗi có được mã hóa hay không trong Java?

Không có phương pháp đơn giản nào cho bạn biết văn bản đã cho có được mã hóa hay không vì có nhiều thuật toán mã hóa và thao tác với văn bản không mã hóa.

Chuỗi mã hóa HTML là gì?

Mã hóa HTML đảm bảo rằng văn bản sẽ được hiển thị chính xác trong trình duyệt, không bị trình duyệt hiểu là HTML . Ví dụ: nếu một chuỗi văn bản chứa dấu nhỏ hơn (