Timeline for Why can't I just let customers connect directly to my database?
Current License: CC BY-SA 4.0
46 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
May 11, 2020 at 13:05 | comment | added | mr5 |
"Performance should be way better, since we skip the entire HTTP communication and web app code" how did you come up that directly communicating in the database removes HTTP communication? If this is some sort of embedded database, the question wouldn't still make a valid point since it was talking about HTTP.
|
|
May 6, 2020 at 3:40 | comment | added | GregJF | First question: HOW does the client connect to the server that hosts the database service That client's will need a DBC driver installed on their computer to make the connection. Remote client that can't be connected via tunnelling connection, then the connection can NOT be successful A remote client can't use DBC driver over http (not compatible) Just to re-interate: Security IS the biggest concern as it guards the data. Software engineering practices create quality software, that guards the data. Data is King! Quality is Queen! The King loves the Queen The Queen loves the King | |
Apr 22, 2020 at 7:18 | history | rollback | schroeder♦ |
Rollback to Revision 2
|
|
Apr 22, 2020 at 6:58 | vote | accept | Moritz Friedrich | ||
Apr 22, 2020 at 6:58 | history | edited | Moritz Friedrich | CC BY-SA 4.0 |
added 255 characters in body; added 2 characters in body
|
Apr 21, 2020 at 12:11 | history | protected | Rory Alsop♦ | ||
Apr 20, 2020 at 19:36 | comment | added | GuilleOjeda | The better maintainability gained by using an application layer is usually reason enough. Still, it's good to discuss the security aspects as well. | |
Apr 20, 2020 at 9:33 | answer | added | usr-local-ΕΨΗΕΛΩΝ | timeline score: 0 | |
Apr 19, 2020 at 22:59 | answer | added | Thomas W | timeline score: 3 | |
Apr 19, 2020 at 18:40 | answer | added | Billy | timeline score: 1 | |
Apr 19, 2020 at 16:21 | answer | added | jo0gbe4bstjb | timeline score: 0 | |
Apr 19, 2020 at 7:35 | comment | added | Askar Kalykov | Because it's never CRUD, that's why. With time you start writing more and more stored procedures and views, which becomes unmanageable, because this monolith depends on RDBMS, which is optimized for data querying and update, and is a bad replacement for any major language's ecosystem (libs, dev tools, vms, etc). | |
Apr 19, 2020 at 4:27 | answer | added | New Alexandria | timeline score: 2 | |
Apr 19, 2020 at 4:01 | answer | added | Jasen | timeline score: 0 | |
Apr 18, 2020 at 23:59 | answer | added | Vilx- | timeline score: 4 | |
Apr 18, 2020 at 23:45 | answer | added | Brian B | timeline score: 2 | |
Apr 18, 2020 at 23:24 | answer | added | jmoreno | timeline score: 2 | |
Apr 18, 2020 at 22:36 | comment | added | Schwern | GraphQL addresses many of these problems. | |
Apr 18, 2020 at 22:15 | comment | added | makerofthings7 | Also consider CQRS in place of CRUD. I’m pursuing CQRS because of the different psychological effects it has when talking about data. (Crud this, crud that.. carries an unnecessary weight with it) | |
Apr 18, 2020 at 22:12 | comment | added | makerofthings7 | In some controlled, trusted environments a “valet key” approach” does allow for partial/scoped access to APIs. Azure Table, based in part on OData, CosmosDB, and others support this as an alternative to OAuth calls by websites and apps. | |
Apr 18, 2020 at 21:54 | answer | added | Steve Morrison | timeline score: 1 | |
Apr 18, 2020 at 14:43 | answer | added | Gaius | timeline score: 6 | |
Apr 18, 2020 at 13:10 | answer | added | O. Jones | timeline score: 8 | |
Apr 18, 2020 at 10:34 | comment | added | marshal craft | Also I don't know how much sql injections are a thing today, but by having the web server query the data base instead of the client, it reduces the possibility of unpredicted behavior, which some security vulnerabilities take advantage of. The rest api still alows a great degree of user programmability, but while removing the possibility of sql injections. That said I have seen website js which apparently did formulate sql requests. Some sites store client html and code on sql servers, which could be driven by desire to reduce costs or complexity maybe? | |
Apr 18, 2020 at 10:10 | answer | added | fraxinus | timeline score: 7 | |
Apr 18, 2020 at 8:52 | answer | added | jl6 | timeline score: 14 | |
Apr 18, 2020 at 8:48 | answer | added | Sergey Shcherbakov | timeline score: 2 | |
Apr 18, 2020 at 8:35 | comment | added | marshal craft | I think you are asking a good question. So I get this, SQL <-> https <-> (rest/api)user. I think the issue could be sql does not have the security. Thus the web server can only talk to the unprotected data base. This could also be efficient. | |
Apr 18, 2020 at 7:36 | comment | added | lurscher | for databases that do not have row-level permissions, you can allow them to access only views that query rows they are allowed to see based on their credentials | |
Apr 18, 2020 at 2:57 | answer | added | lights0123 | timeline score: 5 | |
Apr 17, 2020 at 23:58 | answer | added | elsadek | timeline score: 5 | |
Apr 17, 2020 at 22:57 | answer | added | Lawnmower Man | timeline score: 37 | |
Apr 17, 2020 at 22:11 | answer | added | poolie | timeline score: 19 | |
Apr 17, 2020 at 21:39 | answer | added | NPSF3000 | timeline score: 60 | |
Apr 17, 2020 at 20:45 | history | became hot network question | |||
Apr 17, 2020 at 15:00 | history | tweeted | twitter.com/StackSecurity/status/1251163528456781824 | ||
Apr 17, 2020 at 14:50 | answer | added | Kate | timeline score: -2 | |
Apr 17, 2020 at 14:49 | comment | added | Conor Mancone | Typically that was done via an ODBC connection, so that may be worth a read (although ironically ODBC itself was effectively an application layer between the integrating application and the database, it's just that ODBC would interact directly with the database over the internet) | |
Apr 17, 2020 at 14:48 | comment | added | Conor Mancone | For reference, there are actually many cases where people do exactly this, although it is much more common in older software. There have been cases where I had to open up direct DB access because that was the only kind of integration that some critical and older business software supported. Usually in that case I wouldn't give full database access, or even access to tables my application used. Instead I kept dedicated tables for the applicaton's consumption that only populated when I needed to send data, and other tables for it to write to which I would check regularly for changes. | |
Apr 17, 2020 at 14:46 | comment | added | Conor Mancone | Hi Moritz. I've edited your question title to be an actual question. If you don't like my change though you are welcome to roll it back or edit it yourself! | |
Apr 17, 2020 at 14:46 | history | edited | Conor Mancone | CC BY-SA 4.0 |
edited title
|
Apr 17, 2020 at 14:11 | answer | added | paj28 | timeline score: 69 | |
Apr 17, 2020 at 13:46 | comment | added | reed | I'm not sure I understand your question, but I'd say it's a matter of design. Your idea might work in some simple cases, but in more complex applications it would soon become a mess (ugly or infeasible). | |
Apr 17, 2020 at 13:46 | answer | added | ThoriumBR | timeline score: 143 | |
Apr 17, 2020 at 13:38 | answer | added | Ariff | timeline score: -1 | |
Apr 17, 2020 at 12:45 | history | asked | Moritz Friedrich | CC BY-SA 4.0 |