如何防止sql恶意注入?
这是个好问题。
定义与解决思路sql injection的原因:用户提交的参数可以入库,并且当做sql结构化查询语句执行。
根本办法: 杜绝用户提交的参数入库,并且阻止执行。
SQL注入,一般发生在网站上。
如果网站程序是 JAVA语言可以用 prepareStatement, 作参数化绑定;
也可以用 存储过程,SQL封装在存储过程中;
用ORM技术,如 ibats, hibrnate 等;
如果网站程序是 .NET语言可以用 SqlParameter, 作参数化绑定;也可以用 存储过程,SQL封装在存储过程中;
也可以用ORM技术,如 EntityFrameWork, Dapper 等;
如果网站程序是其它程序,如 PHP语言不拼SQL,可能找不到其它的路;
但是 可以提炼一个公共函数,自动过滤SQL关键词(select, or, and,insert 等);
尤其要屏蔽那些攻击性的关键词如 update, delete, truncate, drop 等
拼接到字符串的传参前后加个括号 与 反括号,可相对有效隔离危险。
希望能对大家有所帮助,谢谢。
(结束)
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有