zugriff von "außen" - table "user" feld "password" gehasht?

9. März 2010 10:51

hi,

es soll eine web-applikation (asp.net) erstellt werden, die per odbc auf eine native nav 5sp1 datenbank zugreifen soll. um keinen unnötigen aufwand bei der benutzerverwaltung zu haben, sollen die gültigen benutzer als datenbank anmeldungen im nav erstellt werden.

nun wäre es ja sehr leicht, in der web-application eine forms-authentifizierung zu programmieren, die mit den daten benutzer und passwort in etwa sowas abfeuert wie:
Code:
SELECT count(*) FROM User WHERE UserID = $User AND Password = $Password

wobei $User und $Password eben vom benutzer vorher eingegeben wurden. dummerweise (eigentlich sinnvoller weise..) ist das passwort in der user-tabelle (2000000002) verschlüsselt/gehasht. das heißt damit ich das umsetzen könnte müsste ich wissen womit das gehasht ist und vor der abfrage die passwort eingabe durch den gleichen hash mechanismus jagen. ich finde jedoch keine informationen hierzu?!

weiß jemand wie nav die passwört hasht/verschlüsselt? ist mein problem verständlich und denke ich vielleicht nur falsch und man kann die sache leichter lösen? für jeden hinweis wäre ich wirklich dankbar!

mich wundert es fast schon, dass das problem bisher nirgends zu finden ist... das muss doch schon mal jemand gewollt haben... :roll:

grüße,
daniel

Re: zugriff von "außen" - table "user" feld "password" gehasht?

9. März 2010 11:02

Windows-Auth über den IIS ist keine Alternative? Also alle User die auf die Web-App zugreifen dürfen in eine Gruppe und dieser Gruppe die Berechtigung zum Aufruf der Web-App im IIS gegeben.

Volker

Re: zugriff von "außen" - table "user" feld "password" gehasht?

9. März 2010 11:08

windows-auth steht hier leider nicht zur verfügung.

ps: das select ist nur zur vereinfachten verdeutlichung. das man es produktiv nicht so einfach durchführen sollte und die sql-injection gefahr besteht ist mir bewusst. wollte ich nur nochma erwähnt haben weil mich nen kollege "angemault" hat :wink:

Re: zugriff von "außen" - table "user" feld "password" gehasht?

9. März 2010 11:10

Hallo Daniel,

zu Nav kann ich dir zwar nicht helfen, aber achte bei der Prüfung von Benutzername und Kennwort bitte auf die Risiken der SQL Injektion.

SELECT count(*) FROM User WHERE UserID = $User AND Password = $Password

Du solltest auf keinem Fall direkt mit SQL die Datenbank abfragen.
Stell dir vor, der Benutzer gibt für seinen Benutzernamen oder das Kennwort den folgenden String ein "(Delete * from User)". Dann lautet dein SQL-Befehl
Code:
SELECT count(*) FROM User WHERE UserID = (Delete * from User) AND Password = $Password

der Delete-Befehl wird auf die Datenbank ausgeführt, und du hast ein Problem.

Re: zugriff von "außen" - table "user" feld "password" gehasht?

9. März 2010 11:16

michael sulz hat geschrieben:zu Nav kann ich dir zwar nicht helfen, aber achte bei der Prüfung von Benutzername und Kennwort bitte auf die Risiken der SQL Injektion.


hehe. du hast wohl geantwortet während ich schon oben geschrieben habe:
ps: das select ist nur zur vereinfachten verdeutlichung. das man es produktiv nicht so einfach durchführen sollte und die sql-injection gefahr besteht ist mir bewusst. wollte ich nur nochma erwähnt haben weil mich nen kollege "angemault" hat :wink:

:lol:

problem besteht also weiterhin... :-?

Re: zugriff von "außen" - table "user" feld "password" gehasht?

9. März 2010 11:32

Ich glaube den Hash fürs Passwort wird Dir keiner sagen (können). Aber wie ist der Ansatz anderesrum:

Kann man die User/Passwort-Kontrolle in NAV ändern oder beeinflussen? z. B. Integration LiveID?


Volker

Re: zugriff von "außen" - table "user" feld "password" gehasht?

10. März 2010 15:48

vsnase hat geschrieben:Ich glaube den Hash fürs Passwort wird Dir keiner sagen (können).

finde ich persönlich sehr seltsam und auch nicht gut. hashfunktionen sind einwegfunktionen, sie sind dafür konzipiert (bzw. mathematisch so gewählt), dass es nicht genügt den algorithmus zu kennen. mir kommen da sofort die worte eines sehr guten profs in den kopf, der uns immer vor dem security by obscurity-prinzip gewarnt hat :wink:

vsnase hat geschrieben:Aber wie ist der Ansatz anderesrum: Kann man die User/Passwort-Kontrolle in NAV ändern oder beeinflussen? z. B. Integration LiveID?

Integration LiveID? was genau ist das? ich komme mir vor wie bei der ms-support hotline, die wollen auch immer irgendwelche IDs die ich nicht kenne bevor es weitergeht :lol:
spass beiseite. mir wäre nicht bekannt, dass ich so einfluss auf die nav-passwort-kontrolle nehmen könnte. die einzige notlösung, die ich momentan sehe ist, dass ich mir eine eigene kleine benutzertabelle stricke, in der ich die benutzer und passwörter md5 gehasht ablege. wobei ich ja eigentlich wollte, dass es einheitlich bleibt mit der benutzerverwaltung.

bin weiterhin offen für gedanken und ideen zu dem thema, da (noch) kein zeitdruck besteht.


grüße,
daniel

Re: zugriff von "außen" - table "user" feld "password" gehasht?

10. März 2010 16:19

LiveID hast Du selbst doch schon oder wie kommst Du in Partnersource? LiveID oder OpenID läßt sich ja auch in eigenen Anwendungen nutzen. Ist im Prinzip nix anderes als Deine Tabelle, nur dass die Daten extern gespeichert sind. Hier http://dev.live.com/liveid/ ist mehr Info.

Das mit der Hash-Berechnung veröffentlichen halte ich nicht für gut, weil so jeder der Anwendung die passenden User/Kennwort Kombination übermitteln und im Extremfall Vollzugriff auf die Daten erlangen könnte.

Ich les aber gerade ODBC. Kann man dem ODBC-Treiber nicht USer und PW beim Aufruf übergeben? Deine Anwendung müßte dann ggf. nur den Auth-Fehler abfangen.

Volker

Re: zugriff von "außen" - table "user" feld "password" gehasht?

12. März 2010 15:35

hi vsnase!

  • das mit der liveId. habe bisher noch keine erfahrung diese in eigenen anwendungen nutzen zu können. klingt recht interessant, aber für dieses projekt keine option.
  • deinen einwand mit der hashberechnung verstehe ich nicht so recht. wie da jemand vollzugriff auf die daten bekommen soll. wie schon gesagt ist der normalfall so wie ich ihn kenne, dass man seine sicherheit nicht darauf aufbaut, dass der hash algorithmus unbekannt ist.
  • deine aussage mit dem übergeben der auth infos beim odbc-treiber hat mich noch ein wenig testen lassen. beim anlegen der nav odbc schnittstelle muss ich ja bereits den mandant auswählen (zumindest ist mir kein weg bekannt, dies später zu tun). das geht nur wenn gültige benutzerdaten in der schnittstelle konfiguriert sind, daher dachte ich, dass diese auch da sein müssen. man kann sie aber benutzen um den mandant auszuwählen und dann wieder rauslöschen. anschließend übergibt man vor verwendung der schnittstelle einfach neue benutzerdaten und der zugriff erfolgt dann mit diesen. perfekt. damit komme ich so weiter wie ich will. manchmal muss man auch erstmal auf die einfachen lösungen geschoben werden. :roll:

ps: wie schreibt man ein [gelöst] vor den threadtitel, wenn der titel an sich schon die maximalen zeichen benötigt? (wollte ich schon immer mal fragen und jetzt brandaktuell *g*)

grüße,
daniel

Re: zugriff von "außen" - table "user" feld "password" gehasht?

12. März 2010 15:44

dr hat geschrieben:ps: wie schreibt man ein [gelöst] vor den threadtitel, wenn der titel an sich schon die maximalen zeichen benötigt? (wollte ich schon immer mal fragen und jetzt brandaktuell *g*)

Man versucht, den Titel so lange zu kürzen, bis es passt und trotzdem noch Sinn ergibt ;-)