mysql 存储过程能不能防止sql注入

不能。理由:虽然存储过程中SQL语句已经预编绎过了,若参数是字符串带有语法,仍会词法分析语法分析。仍然会执行类似 set level = 10。

最好的办法,在上层逻辑,把特殊字符全部过滤掉

1、使用了存过程,很多相似性的删除,更新,新增等操作就变得轻松了,并且以后也便于管理!
2、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。而且防止部分sql注入
3、存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
4、存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
5、存储过程主要是在服务器上运行,减少对客户机的压力。
6、存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
7、存储过程可以在单个存储过程中执行一系列SQL语句。
8、存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

posted @ 2021-10-27 17:12  菜鸡徐思  阅读(1199)  评论(0编辑  收藏  举报