Autor |
Beitrag |
NOS1971
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Do 06.03.14 21:11
Hallo,
ich würde gern in ein Textfeld einen String speichern in dem es auch " gibt ... wie behandle ich das ? Es sollen html tags in einem textfeld gespeichert werden die auch src="iuhiuhikuh" style="lkdshfgjdhljh" beinhalten können ...
aber das INSERT INTO kommt ja so damit nicht klar ... was tun ?
|
|
WasWeißDennIch
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Do 06.03.14 22:38
Wie machst Du es denn? Ich kenne weder SQLite noch Deine Zugriffskomponenten, aber wenn diese SQL-Parameter unterstützen sollten, empfehle ich dringend die Verwendung derselben.
|
|
NOS1971
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Do 06.03.14 22:44
Hier ist ein Beispiel .. ich nutze nur einen sql wrapper ... die url in die db eintragen ist kein thema aber wie handle ich anführungszeichen in einem text
Delphi-Quelltext 1:
| SQLExecString := 'INSERT INTO ResultURLTable(URL, URLLINK, STATUS, PAGERANK, HTTPSTATUS) VALUES ("' + tempurlstring + '","' + linktagsource + '",-1,-1,-1' + ');'; |
tempurlstring enthält eine URL und linktagsource den Source des links also etwas in der art <a href="http://test.de" style="color:#000000;" >Linktext</a>
wenn ich das zusammenführe sieht es so aus
Delphi-Quelltext 1:
| SQLExecString := 'INSERT INTO ResultURLTable(URL, URLLINK, STATUS, PAGERANK, HTTPSTATUS) VALUES ("http://test.de","<a href="http://test.de" style="color:#000000;" >Linktext</a>",-1,-1,-1' + ');'; |
und genau da kommt er halt nicht mit klar
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 06.03.14 23:07
Prinzipiell kannst du deine Anführungszeichen escapen, indem du ein Anführungszeichen durch zwei ersetzt (z.B: stackoverflow.com/qu...to-escape-in-sqlite).
So oder so solltest du vorsichtig sein, was du SQL übergibst. Sonst hat schnell ein Angreifer die Kontrolle über die gesamte Datenbank ( SQL Injection).
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: NOS1971
|
|
NOS1971
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Do 06.03.14 23:09
Also es ist so das die DB für eine Webseitenanalyse lokal auf dem Rechner läuft .. also unproblematisch ... ich schaue mal ob ich das so hinbekomme indem ich ein " durch "" ersetze ...
|
|
NOS1971
Beiträge: 193
Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
|
Verfasst: Do 06.03.14 23:12
Erstklassig ... das war es nun ist alles da wo es hin soll ...
Vielen lieben Dank und eine gute Nacht
|
|
Nersgatt
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 07.03.14 09:08
Generell ist es besser, parametrisierte Abfragen zu verwenden. Das hast Du solche Probleme nicht.
Das sieht dann ungefähr so aus:
Delphi-Quelltext 1: 2: 3: 4: 5:
| myQuery.Sql.Text := 'INSERT INTO TABELLE (Wert1, Wert2, Wert3) VALUES (:Wert1, :Wert2, Wert3)'; myQuery.ParamByName('Wert1').asInteger := 4711; myQuery.ParamByName('Wert2').asFloat := 4711.123; myQuery.ParamByName('Wert3').asString := 'Hallo, "NOS"'; myQuery.ExecSql; |
Je nach Zugriffskomponenten kann das ein wenig abweichen. Aber auf diese Art musst Du Dich gar nicht darum kümmern, irgendwas zu escapen. Das ist deutlich sicherer.
Sonst legt vielleicht jemand eine präparierte Seite auf seinen Server, die Deinen Spider abstürzen lässt.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Für diesen Beitrag haben gedankt: NOS1971
|
|