Wie man einen insert-Abfrage mit string als blob in delphi / interbase

Ich würde gerne eine Abfrage einfügen:

INSERT INTO A_TABLE (BLOB_FIELD) VALUES(MY_BLOB_VAL)

aber ich habe nur string-Werte in delphi für ex:

procedure INSERT_BLOB_QUERY
  var
    query:String;
    my_blob_val:String;
begin
   my_blob_val := 'a blob string to be inserted';
   query := 'INSERT INTO A_TABLE (BLOB_FIELD) VALUES(' + my_blob_val + ')';
   // to execute a query....
end;

Das problem, dass aufgetreten ist string blob-Konvertierung.

So, wie ich einfügen eines Strings in eine interbase-blob-Feld???

  • Security alert 🙂 - schauen Sie bei 'SQL-injection' oder Lesen Sie en.wikipedia.org/wiki/SQL_injection
  • Während ich damit einverstanden, dass SQL-injection ist etwas zu befürchten, für eine Datenbank über das internet zugänglich, was in der Frage macht Sie denken, dass die okami-Datenbank ist irgendwo in der Nähe Umweg über das internet? Die meisten live-Datenbanken ein sehr gut gesichertes Leben hinter firewalls, LAN-Zugang Beschränkungen und domain-Sicherheit. Und der code okami zeigt, kann auch ein Teil eines ansonsten sehr gut geschützt n-tier-Lösung.
  • Gute Praxis ist immer gute Praxis, web-verbunden oder nicht: xkcd.com/327
  • was machen Sie denken, dass SQL-injection ist nicht ein Risiko, wenn auf die Datenbank zugreift über ein LAN (oder hinter einer firewall) und nicht direkt aus dem Internet? Welche Art von Schutz firewalls verfügen über SQL-injection?
  • wohl keiner, aber Sie würden finden müssen Sie zuerst die Datenbank und mit der richtigen Firewall und alle ports geschlossen, das ist eine erhebliche Hürde, wenn kombiniert mit der richtigen LAN-und domain-Zugriffsbeschränkungen. Außer natürlich, Sie sprechen über Angriffe von innen durch die eigenen Mitarbeiter, aber dann hätten Sie andere Mittel zur Verfügung als Rückgriff auf SQL-injection.
  • Hätten Sie andere Mittel, aber warum verlassen Sie die SQL-injection Tür weit offen?... aus der Sicht der Sicherheit, die Sie haben, zu erkennen und zu schließen, so viel wie möglich jede Loch im system.
  • tun Sie sperren Sie alle Türen Innenseite Ihrem Haus? Während es scheinen, wie eine gute Sache, um zu schließen Sie so viele Löcher wie möglich, und auch paranoids haben Feinde, es gibt etwas namens "too much of a good thing..." Auch sollte die Sicherheit nicht einigen pawlowsche knee-jerk Reaktion, sondern eine gut durchdachte und gemessen Reaktion auf Reale Bedrohungen.
  • Ich weiß wirklich nicht, sperren Sie alle Türen in meinem Haus, aber ich in der Regel lock-einige Türen im Büro. Eine gute Praxis, wie mit Parametern, IMHO, ist eine gute Praxis im Allgemeinen, einschließlich desktop-Anwendungen, nicht nur web. Natürlich ist dies nicht das selbe machen Sinn, wenn Sie arbeiten auf einer bank-software, als wenn Sie die Arbeit auf den kleinen shop um die Ecke-software.
  • und dein letzter Satz ist genau mein Punkt...
  • die Haus-Türen-Analogie würde nur funktionieren, wenn die Möglichkeit, Ihre Schlafzimmertür plötzlich suchen auf der Straße wahr. Der Code funktioniert, dass; es sich entwickelt, Ihre Zuständigkeiten verändern sich, und Ihre Funktion kann auch ausgesetzt, durch eine wrapper-Methode, geschrieben von jemand anderem zu einer anderen Zeit oder organisatorischer Ebene. Auch die SQL-Injektion ist nicht das einzige problem hier: Ihre Anwendung kann produzieren falsch SQL, wenn die Saiten zu starten, zeigt mit seltsamen Zeichen. Warum, Frage ich, ob sich der Aufwand zu produzieren secure code ist nicht viel?

InformationsquelleAutor okami | 2011-03-20
Schreibe einen Kommentar