Domanda

Abbiamo un problema in un server specifico. Tutti i segni più inviati ad dell'applicazione vengono sostituiti con spazi - che è in POST e GET, e su tutte le pagine di quel sito
. Come un banco di prova ho questa piccola pagina (è un server ASP):

<html>
<body>
  <form method="post">
    <input type="text" name="Plus" id="Plus" />
    <input type="submit" />
  </form>
  Previous Value: <%= request("Plus") %><br />
  Query String: <%= request.querystring %>
</body>
</html>

Su ogni altro server questo funziona bene, ma su un plus di server vengono sostituiti con spazi.
Esempio: per l'ingresso "1 2+3" - richiesta ( "Plus") è "1 2 3", e la stringa di query è "1+2+3". Non buono. Altri personaggi sembrano essere decodificare correttamente.
Va detto che qualcuno aveva cercato di 'indurire' questo server dagli attacchi, in modo da opzioni IIS oscure possono essere accesi (anche se abbiamo fatto rimuovere il filtro ISAPI).
Grazie.


UPDATE: Si scopre c'è un altro filtro installato, l'SQL Injection filtro ISAPIClipSQLInjection.dll da http://www.codeplex.com/ IIS6SQLInjection .
Il filtro è bacato - sostituisce caratteri validi da POST e GET:

  1. segni più vengono sostituiti con spazi: "1% 2B2" -> "1 + 2", uguale a "1 2"
  2. e virgola sono sostituiti da virgole: "ciao"; -> "ciao,"

Una versione più recente del filtro (2.0b) non risolve questo, ma permette di escludere determinate pagine. Dal momento che è installato in produzione abbiamo deciso di non rimuovere il filtro, abbiamo utilizzato javascript per cambiare tutti i vantaggi di "&#43 " (con lo spazio e non un punto e virgola).
Non è la soluzione ottimale, ma questo è ciò che il capo voleva.

È stato utile?

Soluzione

Si consideri codice ASCII. Al posto di un segno più usare la sua ascii code.It sarebbe chr (43). Sia ASP e SQL avrebbero capito questo.

Ecco una tabella con tutti i codici ASCII. http://www.asciitable.com/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top