【web安全】如何避免sql注入

2021-02-03 09:30发布

2条回答

考虑到数据库类型不同,SQL操作上也是有一定区别的,但对于SQL注入防御手段而言还是有一些共同方案的,结合我的开发经验总结出一些方案供大家参考:

1、用户所有的输入数据务必做校验

“永远不要相信用户的输入”,所以在WEB应用中,但凡是用户提交的数据我们都要进行合法性校验,另外要做必要的数据类型转换和过滤,比如通常我们会将用户输入的单号引、双引号等字符做一个转换,防止其直接传递到SQL语句中。

2、SQL预编译

开发人员在处理查询时,不要采取拼接SQL这种方式来处理,建议使用预编译SQL,参数使用占位符来替换。

3、服务器关闭错误回显

线上服务器可以关闭具体的错误回显,不要将具体的错误信息暴露给攻击者(如果暴露这些错误信息会被黑客利用),所以通常我们都是做个友好的错误页来作为出错时的提示页。

像一些WEB容器、语言/脚本/框架的版本信息也要隐藏或者伪造一个。

4、服务器对GET、POST数据进行处理

比如我们通过Nginx来对用户的GET、POST数据进行一个校验,如果包含某些危险字符(比如SQL关键字、特殊字符等),则直接拒绝请求

5、数据库层面上严格控制权限

不同应用使用不同的帐号来操作数据库,不能使用超级帐户来操作数据库,另外不同业务分配不同的数据库帐号,比如:只读权限、只写权限等,另外像DROP这类操作就不允许执行了。

另外数据库端口禁止外网访问。


一周热门 更多>