存储过程是否有助于消除SQL注入/存储过程对常规SQL语句在应用程序中的好处是什么? [英] Does stored procedure help eliminates SQL injection / What are the benefits of stored procedured over normal SQL statement in apps?

查看:104
本文介绍了存储过程是否有助于消除SQL注入/存储过程对常规SQL语句在应用程序中的好处是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对SQL世界很新。这是我的问题:

I'm pretty new to SQL world. Here are my questions:


  • 在应用程序中存储过程对正常SQL语句的好处是什么?

  • 存储过程是否有助于消除SQL注入?

  • 在Microsoft SQL Server中,它被称为存储过程。在Oracle,MySQL,DB2等中如何?

感谢您的解释。

推荐答案

直接存储过程 阻止SQL注入,如果你以一种分析方式调用它们。如果你的应用程序中仍然有一个字符串与过程名称和连接参数从用户输入到该字符串在代码中,你会仍然有麻烦。

Stored procedures only directly prevent SQL injection if you call them in a paramerized way. If you still have a string in your app with the procedure name and concatenate parameters from user input to that string in your code you'll have still have trouble.

但是,当仅使用时,存储过程允许您添加一些额外的保护,使您可以禁用除EXEC命令。除此之外,参数化查询/预准备语句通常由服务器缓存,因此几乎在所有方面都类似于存储过程。

However, when used exclusively, stored procedures let you add some additional protection by making it possible for you to disable permissions to everything but the EXEC command. Aside from this, parameterized queries/prepared statements are normally cached by the server, and so are just like a stored procedure in nearly every respect.

尽管如此,存储过程对大型企业有两大优势:

In spite of this, stored procedures have two big advantages for larger enterprises:


  • 它们允许您为数据库定义应用程序接口,以便系统可以在多个应用程序之间共享,而无需在这些应用程序中重复逻辑。

  • 他们将sql代码移动到db,在那里你可以轻松地有经验的DBA调优,更新和维护它,而不是应用程序开发人员,他们通常不知道他们在做什么与数据库代码。

当然,这些优势不是没有成本:

Of course, these advantages aren't without cost:


  • 源控制中的更改

  • 数据库代码与使用它的代码差距很大

  • 用于管理多个存储过程的开发人员工具不太理想如果你已经在管理工作室中打开存储过程文件夹来找到数据库的200个过程,你知道我在这里谈论什么)。

这篇关于存储过程是否有助于消除SQL注入/存储过程对常规SQL语句在应用程序中的好处是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆