• sebsch@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago
    GET /api/database?query=SELECT+++name+++FROM+++users+++WHERE+++id=42
    

    I’ve seen that exact type of endpoint, hitting databases in production. 🔥

  • corroded@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    You’ve got to wrap the already basically-just-English SQL database in a layer of abstraction, then serve that as a proprietary API that’s impossible to access without a precompiled library that targets a programming language you’re not using and exposes methods that are 10x more difficult to use than a SELECT statement.

    • Wilzax@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      You significantly cut down on SQLi vulnerability by obscuring the database behind multiple layers of API calls though

      • corroded@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Do you really? If you have permissions set up properly, it really seems like an API over a read-only SQL server is just an unnecessary layer of abstraction.

        • Wilzax@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          If your database is really big and suffers from large volumes of queries in a short time, it’s easier to implement rate limiting in the API than by configuring SQL server permissions.

          It’s also easier to interact with stored procedures across multiple databases, from multiple clients, if you have a 1-to-1 API wrapper for your database procedures. This also lets you serialize your database response in a potentially more portable format than what your database returns directly, such as JSON.

          The API wrapper isn’t a silver bullet for security and scalability, but it is a unified framework to configure better security policies and unify multiple databases.

          I admit, however, that multiple layers of API abstraction is a bit of a meme, just to keep everyone on their toes.

  • pixxelkick@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Technichally yes, SQL is an API.

    Not a RESTful one, nor an HTTP one, but SQL over a socket is very much a type of API…

    But I’m guessing we meant an HTTP RESTful API in which case god I hope not