api参数进行强制转换能避免注入吗?

发布于 2022-09-12 23:35:36 字数 325 浏览 25 评论 0

公司做的一个商城,是我开发的,马上要上线了!
看到同行,昨天又被黑客,篡改了数据库数据,还提交了木马上去,业务几乎崩溃了。看到这里我瑟瑟发抖。

看样子是被黑客找到了注入点!

于是我做的系统,tp框架,我也不确定都是用了,pdo参数化设计,从代码上看,好像没用这些特性。

我寻思着,要不这样。我只接收参数是数字类型的数据。不要搜索功能,服务器对参数进行强制转换成数字int类型!

没有用户留言功能,提交反馈意见啥的。

上传文件接口关闭,例如用户不可以改头像!
后台管理入口,改成复杂的url

不考虑服务器自身安全,假设安全了。

这种方式如何?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感情旳空白 2022-09-19 23:35:36

使用mybatis 或者 hibernate 框架自带就可以防止sql注入,不换框架最快的方法大概就是每一个地方都加字符判断,比如下面的写法,每一个地方都加虽然麻烦,可处理起来最快了

 String injStr = "'|and|exec|create|insert|select|delete|update|count|*|%|chr|mid|master|truncate|drop|char|declare|;|or|-|+|,|while";
        String injStrArr[] = injStr.split("\\|");
        injectStr = injectStr.toLowerCase();
        for (int i = 0; i < injStrArr.length; i++) {
            if (injectStr.indexOf(injStrArr[i]) >= 0) {
                return true;
            }
        }
倾城°AllureLove 2022-09-19 23:35:36

如果你真能做到所有传入的参数,都是数字,对于注入攻击这一块来说,那倒是真的可以解决。。= =
不过把那是特别不推荐这个做法了,一定会给项目功能扩展和维护方面带来大麻烦
面对SQL注入,我们不要害怕他,弄明白SQL注入的原理和当前自己操作数据库的方式就可以规避了

一条准则,不管你用什么语言都尽量保证使用 预编译语句
不能使用预编译语句的,比如某些关键字,order desc 之类的,才采用转换,比如用户传入0,1来转换。
这种情况下应该说就不用太害怕SQL注入了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文