A dicembre, precisamente il 28 , ho pubblicato un articolo su come creare un indice a fisarmonica per categoria .
La mia intenzione iniziale era la stessa di sempre: mostrare come fare qualcosa in modo che chiunque ne avesse bisogno potesse usarlo. Ma questa volta c'era una seconda ragione, un po' più sinistra... ma non troppo.
Volevo parlarne da un po', ma ho preferito farlo, come al solito, con una demo live. Spero di non aver esagerato con questa demo questa volta, perché probabilmente è installata su più di uno dei vostri siti, gli stessi che ora stanno maledicendo tutto. Sì, mi fischiano le orecchie... lo sento.
Immagine: Nukamari
La questione è molto semplice, ma credo che molti di voi la trascurino, probabilmente per ignoranza. Come suggerisce il titolo di questo post, non dovremmo usare JavaScript di terze parti senza essere ragionevolmente certi che il codice faccia ciò che promette di fare . Niente di più, niente di meno.
Quando qualcuno condivide un pezzo di codice con noi come facciamo di solito su Oloblogger – offrendolo nella sua interezza affinché tutti possano installarlo – è relativamente facile darci un'occhiata e, anche senza troppe conoscenze, dedurre che non c'è nulla di sospetto .
Ma se ci viene offerto tramite un collegamento a un file ospitato esternamente, è qualcosa del genere...
<link href="https://googledrive.com/host/0B3b6MFUtZc42bTdJR2JHNkJqOVE/bloggerlabeltoc.css" rel="stylesheet" type="text/css"/>
...come minimo, dovremmo accedere al file per visualizzarne il contenuto e verificarne la legittimità.
In questo esempio, andremmo su https://googledrive.com/host/0B3b6MFUtZc42bTdJR2JHNkJqOVE/bloggerlabeltoc.css e verificare che si tratti di codice CSS innocuo. Tutti i file possono essere visualizzati se ne si conosce l'indirizzo, indipendentemente dal fatto che si tratti di CSS, di un'immagine o, come in questo caso, di un file .js.
Ma questo non basta, perché essendo ospitato al di fuori del tuo controllo, il proprietario può aggiungere o rimuovere codice da quel file a piacimento e, sebbene inizialmente possa sembrare innocuo, potrebbe diventare pericoloso un giorno.
Le stranezze che ho menzionato prima sono facili da includere in un file JavaScript e, che sia per pigrizia o per ignoranza, se qualcuno mi dà una riga da copiare e incollare che carica tutto, perché dovrei preoccuparmi di copiare un file lungo e prolisso, soprattutto perché dovrei trovare il posto giusto nel mio template? Quindi, gli stiamo rendendo le cose troppo facili.
Possono intrufolarsi nella pubblicità (che tutti potrebbero vedere tranne noi), qualche codice dannoso che manda in tilt la pagina, o chissà cos'altro che non vogliamo.
Nel mio caso, ho incluso un semplice avviso fin dall'inizio nel file .js, che è stato attivato oggi, 1° aprile 2015, approfittando del pesce d'aprile , e fortunatamente per voi, blocca solo la pagina in cui si trova il codice di indice che ho fornito. Se l'avessi scritto per essere inserito nel template invece che in una pagina specifica, chi si sarebbe accorto che ciò che bloccava l'intero sito era qualcosa che aveva aggiunto tre mesi prima?
Ho anche compresso il codice in modo che non potesse essere "letto" nemmeno accedendo al file. Di solito questo viene fatto per ridurre le dimensioni del file, anche se a volte il motivo è impedire ad altri di copiare l'idea. Spesso, perché include un link al sito dell'autore, guadagnando così un punto extra nel PageRank. Se è compresso, non sarai in grado di rimuoverlo proprio a causa dell'illeggibilità di cui ho parlato prima.
In breve, la morale della favola è che di tutto il codice JavaScript che trovi qua e là, dovresti mettere sul tuo blog solo quello di cui sei sicuro sia affidabile perché fa esattamente ciò che dovrebbe fare.
Se il file è ospitato altrove, almeno dagli un'occhiata, ma idealmente, dovresti ospitarlo sotto il tuo controllo ; innanzitutto, nel caso in cui scompaia dall'hosting originale, ma soprattutto, in modo che non possa essere modificato a piacimento a tua insaputa.
Se non ti senti a tuo agio con i siti in cui è possibile ospitare JavaScript, controlla semprePuoi inserirlo nel tuo modello .
Ok, e la cosa più importante per alcuni: per utilizzare l'indice in questione senza ricevere l'avviso di blocco della pagina, basta trovare l'indirizzo https://googledrive.com/host/0B3b6MFUtZc42bTdJR2JHNkJqOVE/bloggerlabeltocmin.js , che fa parte di quel codice, e rimuovere le lettere "min".
Lo stesso vale se hai quest'altro file che ho pubblicato in seguito, quando Google Drive non riusciva a servirlo a troppe persone contemporaneamente:
https://sites.google.com/site/acholoblogger/ficheros/bloggerlabeltocmin.js
. E se sei stato uno degli ultimi a utilizzare http://yourjavascript.com/9952181135/bloggerlabeltocmin.js , il tuo nuovo indirizzo sarà http://yourjavascript.com/5321335181/bloggerlabeltoc.js .
Questo ti permetterà di usare quello che non aggiunge nulla di extra (bloggerlabeltoc.js) al posto del file problematico (bloggerlabeltocmin.js).
O meglio ancora, dato che quest'ultimo è già decompresso, puoi anche inserirlo direttamente nella tua pagina indice invece della riga che lo carica da YourJavascript.com. Questa sarà la soluzione migliore perché, come hai visto, ho dovuto cambiare l'indirizzo tre volte perché i provider di hosting gratuiti si stavano stancando di vedere molti di noi usare lo stesso file ;)
<script type="text/javascript">//<![CDATA[
var postTitle=new Array();var postUrl=new Array();var postPublished=new Array();var postDate=new Array();var postLabels=new Array();var postRecent=new Array();var sortBy="titleasc";var tocLoaded=false;var numChars=250;var postFilter="";var numberfeed=0;function bloggersitemap(a){function b(){if("entry"in a.feed){var d=a.feed.entry.length;numberfeed=d;ii=0;for(var h=0;h<d;h++){var n=a.feed.entry[h];var e=n.title.$t;var m=n.published.$t.substring(0,10);var j;for(var g=0;g<n.link.length;g++){if(n.link[g].rel=="alternate"){j=n.link[g].href;break}}var o="";for(var g=0;g<n.link.length;g++){if(n.link[g].rel=="enclosure"){o=n.link[g].href;break}}var c="";if("category"in n){for(var g=0;g<n.category.length;g++){c=n.category[g].term;var f=c.lastIndexOf(";");if(f!=-1){c=c.substring(0,f)}postLabels[ii]=c;postTitle[ii]=e;postDate[ii]=m;postUrl[ii]=j;postPublished[ii]=o;if(h<10){pos tRecent[ii]=true}else{postRecent[ii]=false}ii=ii+1}}}}}b();sortBy="titleasc";sortPosts(sortBy);sortlabel();tocLoaded=true;displayToc2()}function sortPosts(d){function c(e,g){var f=postTitle[e];postTitle[e]=postTitle[g];postTitle[g]=f;var f=postDate[e];postDate[e]=postDate[g];postDate[g]=f;var f=postUrl[e];postUrl[e]=postUrl[g];postUrl[g]=f;var f=postLabels[e];postLabels[e]=postLabels[g];postLabels[g]=f;var f=postPublished[e];postPublished[e]=postPublished[g];postPublished[g]=f;var f=postRecent[e];postRecent[e]=postRecent[g];postRecent[g]=f}for(var b=0;b<postTitle.length-1;b++){for(var a=b+1;a<postTitle.length;a++){if(d=="titleasc"){if(postTitle[b]>postTitle[a]){c(b,a)}}if(d=="titledesc"){if(postTitle[b]<postTitle[a]){c(b,a)}}if(d=="dateoldest"){ if(postDate[b]>postDate[a]){c(b,a)}}if(d=="datenewest"){if(postDate[b]<postDate[a]){c(b,a)}}if(d=="orderlabel"){if(postLabels[b]>postLabels[a]){c(b,a)}}}}}funzione sortlabel(){sortBy="orderlabel";sortPosts(sortBy);var a=0;var b=0; while(b<postTitle.length){temp1=postLabels[b];firsti=a;do{a=a+1} while(postLabels[a]==temp1);b=a;sortPosts2(firsti,a);if(b>postTitle.length){break}}}funzione sortPost2(d,c){funzione e(f,h){var g=postTitle[f];postTitle[f]=postTitle[h];postTitle[h]=g;var g=postDate[f];postDate[f]=postDate[h];postDate[h]=g;var g=postUrl[f];postUrl[f]=postUrl[h];postUrl[h]=g;var g=postLabels[f];postLabels[f]=postLabels[h];postLabels[h]=g;var g=postPublished[f];postPublished[f]=postPublished[h];postPublished[h]=g;var g=postRecent[f];postRecent[f]=postRecent[h];postRecent[h]=g}for(var b=d;b<c-1;b++){for(var a=b+1;a<c;a++){if(postTitle[b]>postTitle[a]){e(b,a)}}}}function displayToc2(){var a=0;var b=0;document.write('<ul class="bsitemap">');while(b<postTitle.length){temp1=postLabels[b];document.write('<li><a href="javascript:void();">'+temp1+'</a><ul>');firsti=a;do{document.write('<li>');document.write('<a class="btitulo" href="'+postUrl[a]+'">'+postTitle[a]);if(postRecent[a]==true){document.write(' - <span class="bnew">Nuovo</span>')}document.write('</a></li>');a=a+1}while(postLabels[a]==temp1);b=a;document.write('</ul></li>');sortPosts2(firsti,a);if(b>postTitle.length){break}}document.write('</ul>')}$(document).ready(function(){$('ul.bsitemap) > li:has(ul)').addClass('dropdown');$('ul.bsitemap > li a').click(function(){var check=$(this).next();$('ul.bsitemap li').removeClass('active');$(this).closest('li').addClass('active');if((check.is('ul'))&&(check.is(':visible'))){$(this).c losest('li').removeClass('active');check.slideUp('normal')}if((check.is('ul'))&&(!check.is(':visible'))){$('ul.bsitemap ul:visible').slideUp('normal');check.slideDown('normal')}})});//]]></script>


Commenti
Posta un commento