ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

防止DoS攻击

防止DoS攻击 个人日记,请勿参考IP限流:同一个ip一分钟内只能请求10次图文验证码,每一个生成的验证码在服务端Redis生成一个唯一的 captchaId。 同一个 captchaId最多允许验证 3 次。如果 3 次都错了直接把这个验证码作废强制前端重新请求新的图文验证码。图文验证码有效期设置为 5分钟。过期自动失效只要验证成功一次立刻从 Redis 删除该captchaId防止重放攻击前端在请求图文验证码时加个 1-2 秒的防抖用户狂点刷新前端只发一次请求。在用户点击刷新时不要立刻清空上一张图等新图加载出来再替换。如果用户频繁刷新不要直接封 IP可以先弹出滑块验证验证通过后再允许刷新。防 OCR 识别图形验证码的字体要扭曲、加干扰线、加噪点。结合设备指纹前端生成同一个设备1天只能注册1个账号同一个 IP1分钟最多请求注册 3-5 次1小时最多 10 次1天最多 20 次参数校验nickname必填长度 2-20 个字符只能包含字母、数字、下划线或中文不能包含空格和特殊符号password必填长度 6-32 位必须同时包含字母和数字不允许有空格rePassword必填必须与password完全一致gender必填且必须是枚举值012。绝对不能允许传 4 这种非法值如果传了直接抛出 400 错误schoolId必填必须是大于 等于1小于等于3的正整数所有校验失败必须返回 400 状态码并给出明确的错误字段和原因例如{code: 400, msg: 性别参数非法, field: gender}。昵称不能是纯数字昵称和密码都不能是连续的数字或连续的字母NotPureDigits校验 nickname 不能是纯数字用正则 ^\\d$ 判断即可。NoSequentialChars校验 nickname 和 password 不能包含连续的数字或字母递增如 123、abc递减如 321、cba忽略大小写长度至少为 3。请给出以下代码NotPureDigits 注解接口和对应的 NotPureDigitsValidator 实现类。NoSequentialChars 注解接口和对应的 NoSequentialCharsValidator 实现类。请在 Validator 中编写遍历字符串 ASCII 码的核心算法。在 RegisterRequest DTO 类中将这两个注解应用到 nickname 字段将 NoSequentialChars 应用到 password 字段。接口层面的反爬虫/反自动化声明与基础防御。创建一个CrawlerPactInterceptor拦截器或 Filter拦截所有/api/*请求。在拦截器中编写preHandle逻辑获取请求头中的User-Agent如果为空或匹配黑名单包含python,curl,scrapy,wget,postman等字样返回 403 错误。检查请求参数中是否存在crawler_pact字段如果该字段不为空说明是爬虫盲目填充的返回 403 错误。403 错误的响应体必须是 JSON 格式{code: 403, msg: 拒绝访问请遵守爬虫君子公约停止恶意抓取。}。请给出具体的代码实现并说明如何在WebMvcConfigurer中注册这个拦截器。同时说明如何处理 POST 请求中读取crawler_pact参数可能导致的流读取问题避免影响后续业务逻辑。”生成一份针对反爬虫的robots.txt文件内容。要求允许 Googlebot、Bingbot 等主流搜索引擎抓取首页和公开页面。禁止所有爬虫抓取/api/路径下的所有接口尤其是/api/user/register。禁止抓取/admin/后台路径。在文件顶部添加一段注释声明‘欢迎遵守本公约的搜索引擎拒绝恶意抓取’。设置合理的Crawl-delay。”
返回列表