API接口防恶意调用盗链或攻击方案

Web前后分离开发,防止API接口被恶意调用或攻击。度娘分享了很多种应对场景的方法。总结得比较好的见文章《前后端分离,如何防止API接口被恶意调用或攻击》、《如何防止别人恶意调用API接口》。
网络安全
本文选用了另外一种常见的配置下载防盗链机制的方法,使用该方式前请仔细阅读《彻底搞清referrer和origin》后,理解应用场景。具体操作记录如下:

  1. 增加Nginx端配置,使其能够获取到Http头信息Origin、Referer。
    proxy_set_header Origin $http_origin;
    proxy_set_header Referer $http_referer;
    
  2. 后端Java来源验证
    public static boolean originAuth(HttpServletRequest request) {
            String referer = request.getHeader("Referer");
            String origin = request.getHeader("Origin");
            String sitePart = request.getServerName();
            if(referer == null || origin == null) {
                return false;
            }
            if (referer != null && !referer.contains(sitePart)) {
                return false;
            }
            if (origin != null && !origin.contains(sitePart)) {
                return false;
            }
            return true;
        }
    

因Http协议是无状态的,针对上面的方法也不是完全无破解方案,只是提高了攻击者的难度。在这条接口网络安全的道路上还得持续的斗智斗勇。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

11 − 8 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据