Frage

Ich habe eine freundliche Diskussion mit einem Entwickler über eine Situation, in denen die Benutzer sich anmelden und Dokumente in einer Web-Anwendung zugreifen. Wenn wir das Dokument für den Benutzer laden, um zu sehen, haben wir den Benutzer-ID in der Sitzung und die DocumentID, die über Abfrage-Zeichenfolge übergeben werden können.

Um den Benutzer zu verhindern, dass der DocumentID auf der Abfrage-Zeichenfolge ändern, schlage ich vor, die gespeicherte Prozedur, die das Dokument nehmen Sie den Benutzer-ID als Parameter lädt Rechte auf das Dokument zu validieren.

Mein Entwickler Freund schlägt vor, dass wir ein separates Verfahren, um zu bestimmen Zugriffsrechte auf das Dokument weiter oben in der Seite und nur eine Prozedur ausführen, um das Dokument zu greifen, wenn das Dokument angezeigt werden soll.

run

Fehlt etwas? Welches ist die effizienteste und sicher? Ich dachte, den Benutzer-ID mit dem DocID in einen Prozeduraufruf vorbei Rechte zu überprüfen und ziehen Sie das Dokument war eine effizientere Lösung.

War es hilfreich?

Lösung

Genau aus Sicht der Leistung, die Benutzer-ID, die entlang der DocumentID in eine gespeicherte Prozedur wäre am besten. Sie haben nur eine Hin- und Rückfahrt mit dem Datenbankserver. Auch, wie andere haben darauf hingewiesen, wenn Sie dieses Dokument von anderen Seiten oder Anwendungen abrufen können, wenn Sie die gleiche gespeicherte Prozedur verwenden, versichern Sie, dass Sie nicht die Sicherheit zu umgehen, dies zu tun.

Es gibt jedoch Situationen, in denen spezielle Sicherheitsüberprüfung mit gespeicherten Prozeduren sinnvoll ist. Wenn Sie andere Ressourcen, die Sie neben Dokumente schützen wollen, und Ihre Bestätigungs-Code ist nicht trivial, können Sie nicht wollen, den Bestätigungs-Code in jeder gespeicherten Prozedur in der Datenbank zu kopieren. In diesem Fall kann es sinnvoll sein, die Sicherheitsinfrastruktur aus, um Ihre Datenzugriffsschicht zu bewegen, und hat die Datenzugriffsschicht den db Anruf Zugang zu genehmigen, bevor die angeforderte Ressource abruft. Wenn Sie diesen Weg nehmen, wollen Sie nicht auf den Entwickler verlassen, um immer daran denken zu müssen, um eine Zulassung db Aufruf Anfordern einer Ressource vor zu machen.

Andere Tipps

  

schlage ich vor, die gespeicherte Prozedur   dass Lasten nehmen das Dokument die   UserId als Parameter zu validieren   Rechte auf das Dokument.

Ich denke, das ist der Weg zu gehen. Wenn aus keinem anderen Grund, als es ist sicherer. Wenn Sie diese Prozedur wieder verwenden, und dann vergessen, den Zugang zu überprüfen - Sie ein großes Loch geöffnet haben. Auf diese Weise ist es offensichtlich und gebacken, dass Sie nicht auf das Dokument bekommen, wenn Sie Zugriff haben.

Die Benutzer-ID sollte ein Session-Variable sein. Richtig. Übergeben Sie die DocumentID im Abfragezeichenfolgeflag. Yup.

Unter der Annahme, die Dokumente in der Datenbank gespeichert sind, würde ich eine Tabelle für die Berechtigungen verfügt: eine recordID ein Benutzer-ID und ein DocumentID. Sie mit dieser Tabelle eine Verknüpfung, wenn das Dokument aufrufen. Wenn Sie noch kein Ergebnis bekommen, erhalten Sie nicht das Dokument. Index alles schön und es wird schnell.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top