Laden...

Einige Fragen zu Web-Anwendung (Sicherheit, DB)

Erstellt von tux83 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.682 Views
T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren
Einige Fragen zu Web-Anwendung (Sicherheit, DB)

Hi Leute!

Ich bin neu hier und ein blutiger Anfänger, was ASP.NET angeht.
Da ich aber nun im Rahmen meiner Diplomarbeit damit konfrotiert wurde, habe ich mich hier angemeldet und gleich mal ein paar Fragen 😉

Also, ich muss eine Webanwendung erstellen, auf die externe Mitarbeiter über das Internet zugreifen können und über ein Formular Daten eingeben. Diese Daten sollen dann verschickt und in einen bestehende Datenbank geschrieben werden. Die Anwendung läuft auf einem Webserver und die Datenbank auf einem separaten DB-Server.
Ich soll jetzt ein Konzept entwickeln, wie man das am besten umsetzen kann- auch mit verschiedenen Alternativen und Vor- und Nachteile dieser.
Nun zu meinen Fragen:

1.
Die Verbindung zwischen Client und Server muss absolut sicher sein, da sehr sensible Daten übertragen werden. Wie kann ich die sichere Verbindung am besten realisieren?
Die einzige Möglichkeit, die ich bisher gefunden habe ist SSL. Gibt es da vielleicht noch andere Alternativen?

2.
Wie sollte ich am besten die Daten in die Datenbank schreiben lassen?
Da bin ich bis jetzt auf 2 Möglichkeiten gestoßen. Erstens einfach direkt im Code der Anwendung mit den entsprechenden Operationen die Daten in die DB schreiben oder eben über Stored Procedures. Bei Stored Procedures könnte man ja dann alle Daten mit einem mal übertragen und nicht viele kleine Pakete oder?
Gibt es da noch weitere Alternativen?

Kennt ihr da vll. noch ein paar gute Links direkt zu den Themen- ich habe da so richtig noch nichts gefunden.

Also mir gehts bei der ganzen Sache erstmal nur um verschiedene Möglichkeiten, die Implementierung interessiert mich erstmal nicht. Es sollte aber natürlich alles mit Visual Studio .NET 2005 und C# möglich sein 😉

Danke...

P
22 Beiträge seit 2007
vor 17 Jahren

die Daten Serialisieren

2.
ich machs immer so:

Hab eine Klasse die heist DBCon.cs und über diese Klasse wird die Datenbankverbindung aufgebaut und Daten in die Datenbank geschrieben oder gelesen.

Coding Styles are like assholes, everyone has one and no one likes one!

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

Was heißt Daten serialisieren und warum ist das sicher? Sorry, aber wie gesagt, ich kenne mich damit so garnicht aus 😉

S
8.746 Beiträge seit 2005
vor 17 Jahren

Bei reinen Webanwendungen via Browser ist SSL tatsächlich die einzige Sicherungstechnik. Wie du die Daten in deine DB bekommst hängt ganz von der Anwendung, deinem Vorwissen und Vorlieben ab. Es gibt nur ganz selten Gründe, die einen da wirklich einengen.

Ich persönlich vermeide Stored Procs eher und neige zu O/R-Mappern oder gar zur OO-Dbs weil ich relationale DBs aus vielerlei Hinsicht als suboptimal empfinde. Aber auch das sehe ich nicht dogmatisch. Es gibt Fälle, da ist klassisches ADO.NET durchaus angesagt, z.B. für (Fast-)Nur-Lesende-Webanwendungen.

P
22 Beiträge seit 2007
vor 17 Jahren

Original von tux83
Was heißt Daten serialisieren und warum ist das sicher? Sorry, aber wie gesagt, ich kenne mich damit so garnicht aus 😉

Kommt drauf an wie du die Webapplication schreibst

interagiert die WebApplication direkt mit der Datenbank, macht serialisieren keinen sinn, interarigert die webapp mit einem programm auf dem server wo das programm die db verbindung aufbaut macht serialisieren sinn.

Verbindet die WebApp direkt die DB??

Coding Styles are like assholes, everyone has one and no one likes one!

S
8.746 Beiträge seit 2005
vor 17 Jahren

... will meinen: Serialisierung kann Sinn machen um die Daten durch die Schichten des Servers zu schaufeln, wenn es mehr als zwei davon gibt. Da du offenbar aber keinen ApplicationServer planst, kommt Serialisierung wohl nicht zum Einsatz.

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

Also die Webanwendung soll schon direkt mit der Datenbank interagieren, es läuft also kein Anwendungsserver dazwischen.
OK, da habe ich mit dem SSL schonmal garnicht so falsch gelegen- darauf wird es dann im Endeffekt auch hinauslaufen denke ich.
Wie ich das mit der Datenbank realisiere muss ich noch sehen, da auch noch nicht so ganz klar ist, wieviele Daten jeden Tag reinkommen usw.
Aber danke erstmal für die Antworten 🙂

Falls noch jemand Tipps und Anregungen hat, natürlich immer her damit 😉

P
22 Beiträge seit 2007
vor 17 Jahren

einen Tipp zur Datenbank:

die Datenbank sollte nach dem Laden der Seite wieder geschlossen werden

Warum?

Jede seite wird einzelen geladen -> neue DB-Connection -> keine wird geschlose -> x-Tausend datenbank verbindungen

Coding Styles are like assholes, everyone has one and no one likes one!

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

Danke für den Tipp...ist notiert 😉

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

Also, jetzt weiß ich Genaueres.
Die Verbindung zwischen Web-Server und DB-Server ist durch VPN und Firewall gesichert. Die Firewall ist nur aus Richtung
des DB-Servers offen, d.h. alle Datenbankoperationen sollen vom DB-Server ausgehen. Das ganze lässt sich doch dann nur
mit Stored Procedures lösen- seh ich das richtig?

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von tux83
Die Firewall ist nur aus Richtung
des DB-Servers offen, d.h. alle Datenbankoperationen sollen vom DB-Server ausgehen.

Was meinst du damit genau?

Ob Stored Proc oder nicht hat damit in jedem Fall nix zu tun. Der Webserver stellt eine Anfrage und der DB-Server muss antworten.

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

Naja, das weiß ich eben auch nicht so 100%-ig.
Der Typ von der EDV hat gesagt, dass z.B. der Datentransfer von der Webanwenung zur DB vom DB-Server angestoßen werden
soll und nicht von der Webanwendung, da das wegen der Firewall nicht möglich sein soll, dass eben von außen nichts reinkommen kann, was nicht soll.
Deshalb dachte ich ja an Stored Proc, weil da ja von der Anwendung nur die Prozedur aufgerufen wird und den Rest macht ja der DB-Server.

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von tux83
Der Typ von der EDV hat gesagt, dass z.B. der Datentransfer von der Webanwenung zur DB vom DB-Server angestoßen werden
soll und nicht von der Webanwendung, da das wegen der Firewall nicht möglich sein soll, dass eben von außen nichts reinkommen kann, was nicht soll.

Das ist - gelinde gesagt - großer Quatsch. Ein DB-Server wird immer von außen angefragt (Geschichten wie Yukon-Events lassen wir mal außen vor...). Das heisst ja nicht umsonst "Server". Falls Web- und DB-Server nicht in einer Sicherheitszone liegen (was oft der Fall ist), dann musst du einen weiteren Server (Application Server) in die Sicherheitszone des des DB-Server stellen. Auf diesem läuft dann die gesamte Geschäftslogik. Der App-Server wird dann vom Webserver mit einer Kommunikationstechnik angesprochen, die die Firewall erlaubt, üblicherweise Webservices.

Deshalb dachte ich ja an Stored Proc, weil da ja von der Anwendung nur die Prozedur aufgerufen wird und den Rest macht ja der DB-Server.

Ich glaube, dir ist noch nicht klar was eine Stored Proc ist. Ob du Stored Procs oder klassisches SQL verwendest ändert nix an der Art der Kommunikation: Der Client (in deinem Fall der Webserver) macht einen Aufruf beim DB-Server und bekommt ein Ergebnis. Eine Stored Proc erlaubt es dir nur, Logik auf den DB-Server zu verlagern. Das hat verschiedene Vorteile, vor allem dann, wenn verschiedenen Anwendungen die DB beackern (Konsistenz, Versionierung, etc.). Bei nur einer Anwendung ist der Einsatz von Stored Procs eher Geschmacksfrage.

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

Ja ok, hast recht, das war Quatsch- jetzt bin ich glaub ich ein bisschen mehr durchgestiegen.
Folgendes habe ich jetzt: Einen Webservice auf dem selben Server, auf dem auch die DB liegt und dann habe
ich von meiner Webanwendung auf den Wegservice zugegriffen.
Folgendes will ich jetzt machen: In das Formular der Webanwendung werden Daten für eine Tabelle in der DB
eingetragen und diese Daten sollen halt dann in die DB kommen.
Auf dem Webserver ist auch eine Datenbank, auf diese sollten laut meinem Chef erstmal die Daten aus dem Formular
drauf und diese sollen dann wieder abgerufen und in die interne Datenbank eingetragen werden.
Bloß da frage ich mich, ob das überhaupt nötig ist, weil man dann ja wieder 2 Datenbanken hat.
Ist es nicht auch möglich das Ganze nur über DataSets zu regeln?
Ich habe jetzt im Prinzip im Webservice einen DataSet erzeugt, mit der entsprechenden Tabelle gefüllt und an die
Webanwendung übergeben.
Innerhalb der Webanwendung habe ich dann zu der Tabelle im DataSet eine Datensatz hinzugefügt- funzt
auch alles so weit.
Mein Problem ist gerade nur, wie ich die Daten wieder zurück in die Datenbank bekomme.
Aus der Webanwendung auf Methoden aus dem Webservice zuzugreifen ist ja kein Thema, aber wie mache
ich das umgekehrt?
An dem Punkt komme ich grad nicht so ganz weiter- vielleicht kann mir hier ja jemand helfen...

Ach ja, was ich vielleicht noch dazusagen muss, ich kann nicht von der Webanwendung direkt auf die interne Datenbank zugreifen, wegen den Benutzerrechten, ansonsten wäre das ja kein Problem 😉

T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 17 Jahren

OK, Problem gelöst. Zumindest auf meinem localhost läuft alles, wie es soll. Den Rest teste ich dann morgen 😉