当API的输入只接收sql查询字符串时

时间:2016-04-07 15:39:31

标签: .net api

最近,我的同事想为不同的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方法不是那么糟糕?有什么缺点?

1 个答案:

答案 0 :(得分:1)

将SQL查询字符串发送到API以检索数据是世界上最糟糕的想法。

所以基本上如果有人攻击你的系统,你已经为它们编写了一个很好的数据库API。

如果您要执行此操作,那么您也可以直接公开数据库连接方法。不需要API。可怕的想法!!!

开发API以完成您想要的工作。如果您需要更改它,请更改它。

修改

如果他们希望灵活地修改返回的数据,那么他们可以将存储过程或视图的名称发送给API。然后,API可以在验证后使用存储过程或视图查询数据库。

然后,他们可以添加,删除或修改数据库中的存储过程和视图,而不会暴露任何重大安全问题。