最近,我的同事想为不同的Web服务器(.net,java,android)设计一个API来获取他们想要的数据,顺便说一下它是一个.NET API项目。
但是API只接收SQL查询字符串......我觉得API的客户端很快就会遇到麻烦。
我认为API的目的是让客户不要担心我们应该如何创建DAL?''表的关系是什么数据库?'。客户端不应该担心这些,只需将参数传递给API,然后您将获得所需的所有数据。
我不这么认为参数将是SQL查询字符串。如果我必须将SQL查询字符串传递给API,为什么我不直接使用ADO或EF来获取我自己的数据?我的Web服务器框架是ASP.NET。
为什么存在API?因为管理员想要DAL(BO)来获取数据,而DAL(BO)也必须与JAVA团队的Web服务器一起工作。
这是简单的架构。
客户端--- Web服务器--- API ---数据库
我错了?将SQL查询字符串传递给API方法不是那么糟糕?有什么缺点?
答案 0 :(得分:1)
将SQL查询字符串发送到API以检索数据是世界上最糟糕的想法。
所以基本上如果有人攻击你的系统,你已经为它们编写了一个很好的数据库API。
如果您要执行此操作,那么您也可以直接公开数据库连接方法。不需要API。可怕的想法!!!
开发API以完成您想要的工作。如果您需要更改它,请更改它。
修改强>
如果他们希望灵活地修改返回的数据,那么他们可以将存储过程或视图的名称发送给API。然后,API可以在验证后使用存储过程或视图查询数据库。
然后,他们可以添加,删除或修改数据库中的存储过程和视图,而不会暴露任何重大安全问题。