Sto solo imparando a conoscere la sicurezza IT, quindi questa è roba di base e sto forse pensando troppo.
1. Ho questo campo di immissione sul mio sito wordpress (ssl è attivo) che indirizza l'utente al prodotto che ha inserito:
HTML
<a target="_blank" id="reflectedlink" href="http://www.google.com/search">Button</a>
<input id="searchterm"/>
JS
// Adds string to href
var link= document.getElementById('reflectedlink');
var input= document.getElementById('searchterm');
input.onchange=input.onkeyup= function() {
link.search= '?q='+encodeURIComponent(input.value);
};
// Fires button on enter keypress
$("#searchterm").on("keyup", function(e) {
if(e.keyCode == 13) {
$('#reflectedlink')[0].click();
}
});
Filtra i brutti segni con encodeURIComponent () (quindi dovrebbe andare bene se js è attivo?), tuttavia, se qualcuno spegne js, il campo di input può essere usato per qualsiasi tipo di attacco XSS o roba simile? Devo convalidare questo campo nel mio functions.php o va bene dato che non ci sono dati che vengono inviati al database e wordpress potrebbe averne cura comunque?
2. Ho imparato che innerHTML dovrebbe essere evitato, quindi ho questa funzione per ordinare prodotti, utilizza il metodo jQuerys html () (che sostanzialmente è lo stesso?):
HTML
<div class="wrap">
<button id="alphBnt">Alphabetical</button>
<button id="numBnt">Numerical</button>
<div id="container">
<div class="box">
<h1>B<h1>
<h2>10.35</h2>
</div>
<div class="box">
<h1>A<h1>
<h2>100.05</h2>
</div>
<div class="box">
<h1>D<h1>
<h2>200</h2>
</div>
<div class="box">
<h1>C<h1>
<h2>5,510.25</h2>
</div>
</div>
</div>
JS
var $divs = $("div.box");
$('#alphBnt').on('click', function () {
var alphabeticallyOrderedDivs = $divs.sort(function (a, b) {
return $(a).find("h1").text() > $(b).find("h1").text();
});
$("#container").html(alphabeticallyOrderedDivs);
});
$('#numBnt').on('click', function () {
var numericallyOrderedDivs = $divs.sort(function (a, b) {
return $(a).find("h2").text() > $(b).find("h2").text();
});
$("#container").html(numericallyOrderedDivs);
});
Va bene usare in questo contesto e l'intero "evita innerHTML / html ()" fa riferimento al suo uso in combinazione con i campi di input / qualsiasi input utente?
PER CHIARIMENTO
Per quanto riguarda il campo di input che sto chiedendo su questo scenario esatto, non è usato per memorizzare alcun dato sul server, tutto ciò che fa è modificare un href e sto convalidando l'input in questo campo con encodeURIComponent ().
Volevo sapere se il seguente è corretto:
Se il js del client è attivo, l'input viene convalidato, altrimenti non devo convalidare l'input poiché questo campo di input è fondamentalmente solo quello, un campo di input senza interazione con il server o il client (oltre a digitare cifre in esso) e quindi non può essere utilizzato per un attacco (supponendo che il resto del sito / server sia sicuro).
Grazie in anticipo per qualsiasi aiuto / suggerimento.