JavaScript з атрибутом CF-Hash таємниче додаються до вихідного коду
Я тільки що помітив, що одна з моїх статей на веб-сайті має дивний код JavaScript, доданий в мій вихідний код, який я показую в статті.
Приклад вихідного коду:
scp SourceFile user@remote.host:
Але при відвідуванні сторінки Я бачу такий код:
scp SourceFile user@remote.host<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script>:
Якийсь JavaScript додається до мого вихідного коду (і тільки в одному місці).
<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script>
Я став швидко редагувати пост і побачив те, що його зміст було в порядку. Тільки на виході (при показі на сторінці) зміст псувалося. Це було дуже дивно. Я використовую плагін для підсвічування синтаксису в прикладах вихідного коду, тому спочатку Я подумав про те, що саме він викликає помилку. Після Я вирішив пошукати атрибут getAttribute(“cf-hash”)
в інтернеті. Виявилося то, що це сервіс “CloudFlare”, послугами якого Я користуюся, а точніше його функція обфускаціі поштових адрес.
“Email Address Obfuscation” — це функція в CloudFlare яка шифрує адреси електронної пошти на веб-сторінці від ботів, але зберігаючи їх видимими для людей. Чи не відбувається видимих змін для відвідувачів вашого веб-сайту. CloudFlare обфусцірует адреса електронної пошти за замовчуванням.
Сервіс “CloudFlare” помилково сприймав рядок user@remote.host:
як поштову адресу і тому намагався її затемнити
Для того, щоб виправити ситуацію необхідно екранувати рядки такого виду або повністю відключити обфускація поштових адрес.
1) Щоб заборонити CloudFlare обфускація “адреси електронної пошти” (email), просто оберніть їх в теги коментарів HTML наступним чином:
<!—email_off-->EMAIL ADDRESS<!—/email_off-->
Будь-який код (наприклад, адреси електронної пошти) між відкриває і закриває коментарем тегів буде відображатися для користувача точно так, як написано в початковому HTML-коді.
2) Для повного відключення функції обфускаціі поштових адрес виконайте наступні пункти.
-
Перейдіть на сайт
www.cloudflare.com
і авторизуйтесь. -
Перейдіть в
Dashboard
. -
Виберіть ваш сайт.
-
Перейдіть у вкладку
Scrape Shield
. -
Встановіть в значення
off
пунктEmail Address Obfuscation
.
Якщо ця стаття допомогла вам, будь ласка, залиште коментар
Дякую за прочитання!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.