Onclick-syntax-problem bei der übergabe von zwei Variablen, classic asp
Mein onclick-Funktion funktioniert wunderbar, wenn ich übergeben Sie eine variable und nicht Antworten, sobald ich versuche zwei Variablen. ist etwas falsch mit meinem syntax?
alles unterstützt wird dieser code wurde getestet und funktioniert einwandfrei also ich bin mir sicher, etwas ist falsch mit der syntax der onclick-code-Zeile. jede Hilfe wäre genial.
------------onclick code---------------------------------------------------
Response.Write "<td class=""alt""><input type=""button"" onclick=""deleteRecordAtt(" & AttID &","& StoredPath & " )"" value=""remove"" /></td></tr>"
-----------function reference code in main page---------------------------------------
function deleteRecordAtt(AttID, StoredPath){
if(confirm("This will delect the attachment path"))
{
document.location.href="delete_attachments.asp?EMAIL_LETTERS_HOLD_ID="+AttID+"&RedirURL="+escape(document.location.href);
}
}
-----------function code in source page ----------------------------------------------
<%
Dim AttID, RedirectURL, StoredPath
Dim objConn
AttID=request("EMAIL_LETTERS_HOLD_ID")
RedirectURL=request("RedirURL")
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "DSN=MyDSN"
objConn.Execute("UPDATE EMAIL_SEND_ATTACHMENTS set ATTACHMENTS = Replace(LTRIM(RTRIM(ATTACHMENTS)), '"& StoredPath & "' ,'') WHERE EMAIL_LETTERS_HOLD_ID= "& AttID & " ")
objConn.Close
Set objConn = Nothing
response.redirect RedirectURL
%>
- Kann StoredPath doppelte Anführungszeichen enthalten? Kannst du die HTML-diese produziert?
- dieser code ist anfällig für sql-injection
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verkettung von strings ohne Flucht - noch nie eine gute Idee. Vermutlich AttID ist eine Ganzzahl, die ist, warum Sie Weg mit, dass ein argument, aber StoredPath ist ein string. Als Sie nicht entkommen oder gewickelt, die saite, Ihr Schreiben oben werden am Ende mit HTML-code wie (vorausgesetzt, 'storedpath' ist zum Beispiel ein Dateiname):
einer nicht börsennotierten 'file.gif" nicht, HIERFÜR gültigen JavaScript-natürlich: ein syntax-Fehler führt. Stellen Sie sicher, Sie haben Skript-Fehler in Ihrem browser aktiviert ist, so dass Sie sehen können, wenn so etwas schief geht, statt es einfach still zu scheitern.
Die naive Lösung besteht darin einwickeln Zitate:
sind die Ergebnisse in:
die Arbeit. Aber was, wenn Ihr StoredPath-variable ist ein einzelnes Zitat in es? Oder ein < oder & Charakter - diese müssen immer die Enkodierung mit Hilfe von Server.HTMLEncode() sowieso, es sei denn, Sie wollen cross-site-scripting-Sicherheitslücken in Ihrem app.
Was man brauchen würde wäre eine VBScript-Funktion zum escape-Zeichen in JavaScript-string-Literale, durch die Flucht out-of-band-Zeichen in JavaScript - \xNN hex-Zeichen-escapes. Eine einfache version würde anfangen mit sowas wie (ungetestet, ich bin nicht eine VBScript-coder):
Bearbeiten hinzufügen re Frage Bearbeiten:
Wieder, strings verketten, ohne entkommen. Diese bietet Ihnen eine SQL-injection-Fehler - ein einfaches Anführungszeichen in Ihrem StoredPath variable bewirkt, dass die Abfrage zu sprengen. Und wenn ein Angreifer sagte etwas wie:
dann schwupp auf Wiedersehen-Datenbank! Wahrscheinlicher ist, dass Sie von einem hit der viele automatisierte SQL-injection-Angriffen, die derzeit die Verbreitung der Russischen malware-rund um das web.
Entfliehen Sie dem SQL-string-Literale oder, besser, verwenden parametrierte Abfragen.
Wieder stellen Sie sicher, dass JavaScript-Fehler sind aktiviert, so dass Sie sehen können, keine Probleme. Ich weiß nicht, ob es das Problem in diesem Fall, aber:
Lesen sollte:
JavaScript escape() sollte nicht immer verwendet werden, wie es ist subtil und dummerweise nicht kompatibel mit der korrekten URL-Kodierung erfolgt durch alsterrunde().
Lage - kurze für Fenster.- Standort - ist in Wirklichkeit ein anderes Objekt zu dokumentieren.Standort und die richtige zu verwenden, wenn Sie möchten, bewegen Sie den browser auf eine neue Seite. Schriftlich zu dokumentieren.Lage ist nicht funktionieren soll, obwohl es vielleicht noch auf manchen Browsern manchmal, wenn Sie Glück haben.
Könnte es ein problem in der javascript-deleteRecordAtt Funktion?
vielleicht ist der zweite parameter wird behandelt wie eine variable, die nicht existiert?
Würde es helfen, wenn Sie fügen Sie die Javascript-Funktion als gut.