14 Stimmen

Ungültige Webresource.axd-Parameter werden erzeugt

Ursprüngliche Frage:

Wir haben einen merkwürdigen Fehler bei der Generierung von WebResource.axd-Url. (Er scheint nicht mit dem recht häufigen Problem "WebRsource.axd Padding ist ungültig und kann nicht entfernt werden" zusammenzuhängen).

Wir haben eine ASP.NET-Webseite, die beim Erstellen einen Skriptverweis auf WebResource.axd hinzufügt.

In diesem Fall sehen wir, dass sich der Link WebResource.axd ab einem bestimmten Punkt gelegentlich in Müll verwandelt und durch etwas ersetzt wird, das wie Javascript aussieht. Noch schlimmer ist, dass der Fehler bei der Url-Generierung inkonsistent zu sein scheint.

In unserem Fall sollte der Link (und normalerweise tut aussehen):

/WebResource.axd?d=D-wd7RbHCvSp_p0mHAmE4g2&t=633464867255568315

Alles schön und gut. Allerdings erhalten wir Fehler von Benutzern protokolliert ... und die Url sie versuchen, wie (in einem Fall) zugreifen sieht:

/WebResource.axd?d=D-wd7RbHCvS/../../images/icons/Ico_resize.gif')}}function%20ShowFilter_Manufacturer(){var%20div.......

[das verbleibende verschlüsselte Javascript aus diesem Link wurde als irrelevant entfernt]

Noch merkwürdiger ist, dass wir mehrere dieser Meldungen kurz hintereinander von demselben Benutzer erhielten, der offenbar versuchte, die Seite neu zu laden... wobei sich die URLs jeweils leicht unterschieden.

/WebResource.axd?d=D-wd7RbHCvS<garbage>
/WebResource.axd?d=D-wd7RbHCvSp<garbage>
/WebResource.axd?d=D-wd7RbHCvSp_<garbage>

In einigen Fällen handelt es sich bei dem Müll um verschlüsseltes JavaScript, ich habe Teile einer URL gesehen... völlig leere Parameterstrings... ich kann kein offensichtliches Muster erkennen.

Nebenbei bemerkt, sollte es relevant sein, sollte angemerkt werden, dass ich nicht glaube, dass diese WebResource irgendetwas anderes ist als eine Standard-WebResource, die automatisch von .NET eingebunden wird, wenn bestimmte Funktionen auf einer Seite eingebunden werden... in diesem Fall ein Feldvalidator. Ein Blick auf den Inhalt der eigentlichen WebResource.axd zeigt eine sehr standardmäßig aussehende Reihe von Javascript-Funktionen, die dazu bestimmt zu sein scheinen, generische .NET-Ereignisse zu behandeln. Nicht irgendetwas, das wir erstellt haben.

Hat jemand so etwas schon einmal gesehen? (oder besser, hat jemand verstanden, warum das passiert ist, und eine Möglichkeit gefunden, es zu beseitigen?)

EDIT 0: Einige zusätzliche Informationen:

Punkt 1: Als Antwort auf eine Antwort haben wir sichergestellt, dass unsere Skripte mit CDATA-Tags eingeschlossen sind, da unser Doctype xhtml transitional ist:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Obwohl wir große Hoffnungen hatten, scheint das Problem damit leider nicht gelöst zu sein. Wir haben dies häufiger mit dem IE 8 als Browser bemerkt, was die Vermutung nahelegt, dass dies mit dem Browser zusammenhängt... vielleicht mit der Art und Weise, wie der Browser den Stream analysiert... aber warum wir bei nachfolgenden Versuchen subtil unterschiedliche Antworten erhalten, ist mir ein Rätsel.

Punkt 2: Es hat sich herausgestellt, dass es sich bei den ausgelassenen Abschnitten um Blöcke von ziemlich gleichmäßiger Größe zu handeln scheint. Jemand berichtete, dass er 1k oder 4k Blöcke fehlen sah, und ich (bisher... ich habe nur zwei Fälle bisher betrachtet) würde zustimmen (meine waren beide fehlenden 4096 Bytes Daten).

7voto

John Boker Punkte 80493

Laut diesem Beitrag:

http://bytes.com/topic/asp-net/answers/861764-invalid-viewstate-system-string-decryptstringwithiv

Es scheint, dass das Problem durch die Art und Weise verursacht wird, wie die Browser Seiten unterschiedlich darstellen, wenn der Doctype nicht angegeben ist.

Hier ist ein weiterer interessanter Beitrag, den ich zu diesem Thema gefunden habe, auch wenn er nicht die Lösung ist:

http://blog.aproductofsociety.org/?p=11

auf der oben genannten Seite hat es "Response.Cache.SetNoStore()" als eine mögliche Lösung in den Kommentaren, ich werde dies als nächstes versuchen, um zu sehen, ob es hilft.

5voto

Jim Petkus Punkte 4452

Microsoft hat sich zu diesem Problem geäußert:

Hinweis: Es handelt sich um einen Fehler im Internet Explorer 8. Das Internet Explorer-Team hat dieses Problem untersucht.

-=Auswirkungen=- Bis jetzt glauben wir, dass das Problem keine Auswirkungen auf die Erfahrung des Endbenutzers mit der Webanwendung hat; die einzige negative Auswirkung sind die sporadischen/unvollständigen Anfragen, die von der JavaScript-Spekulativ-Download-Engine gesendet werden. Wenn das Skript tatsächlich vom Parser benötigt wird, wird es ordnungsgemäß heruntergeladen und zu diesem Zeitpunkt verwendet.

-=Umstände=- Die "spurious-request" scheint nur in bestimmten zeitlichen Situationen aufzutreten, nämlich nur dann, wenn ein META HTTP-EQUIV-Tag mit einem Content-Type mit einer CHARSET-Direktive im Dokument vorkommt, und nur dann, wenn eine JavaScript SRC URL das 4096ste Byte des HTTP-Antwortkörpers überspannt.

-=Abhilfe=- Daher glauben wir derzeit, dass dieses Problem entschärft werden kann, indem der CHARSET der Seite über den HTTP Content-Type-Header deklariert wird, anstatt ihn innerhalb der Seite anzugeben.

Anstatt also die

[META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"]

Senden Sie stattdessen in Ihrem head-Tag den folgenden HTTP-Antwort-Header:

Inhalt-Typ: text/html; charset=utf-8

Beachten Sie, dass die Angabe des Zeichensatzes im HTTP-Header in allen Browsern zu einer verbesserten Leistung führt, da die Parser des Browsers beim Auffinden der Zeichensatzdeklaration das Parsing nicht von vorne beginnen müssen. Außerdem hilft die Verwendung des HTTP-Headers, bestimmte XSS-Angriffsvektoren zu entschärfen.

HINWEIS: Es gibt Berichte, dass dieses Problem auch dann auftritt, wenn das META HTTP-EQUIV nicht auf der Seite ist. Wir werden diesen Kommentar aktualisieren, sobald wir weitere Untersuchungen durchgeführt haben. Geschrieben von Microsoft am 6/30/2009 um 12:25 Uhr

2voto

InfinitiesLoop Punkte 13711

Ich bin vom ASP.NET-Team - wir suchen einen Kunden, der bereit ist, mit uns zusammenzuarbeiten, um dieses Problem zu untersuchen. Wenn jemand in der Lage ist, das Problem zuverlässig zu reproduzieren, indem er seine eigenen Seiten anfordert und die Protokolle überprüft, und bereit ist, mit unserer Support-Gruppe zusammenzuarbeiten, antworten Sie bitte oder senden Sie mir eine direkte Nachricht. Vielen Dank!

1voto

Mladen Mihajlovic Punkte 5485

Gegen welche Version von .NET kompilieren Sie? Was passiert, wenn Sie Ihren Build ändern, um für eine ältere oder neuere Version zu kompilieren? (Ich bin nicht sicher, ob das etwas bringt, aber es ist einen Versuch wert)

Wenn das Problem immer noch auftritt, sollten Sie einen Fehler auf Microsoft Verbinden . Sie sollten sich recht schnell bei Ihnen melden.

1voto

Zhaph - Ben Duguid Punkte 26343

Haben Sie irgendwelche HttpHandler oder Module, die in der Webkonfiguration registriert sind, die das gerenderte HTML ändern, bevor es an den Benutzer gesendet wird?

Diese können oft sein:

  • Minimierung von JS und CSS
  • Sicherstellen, dass HTML gültig ist

Könnte einen Blick wert sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X