Pendaftaran berniat jahat biasanya merujuk kepada penggunaan skrip atau robot automatik untuk menjalankan sejumlah besar pendaftaran dalam tempoh yang singkat Tingkah laku ini akan memberi tekanan kepada sistem malah menyebabkan sistem lumpuh. Untuk menyelesaikan masalah ini, langkah-langkah berikut boleh diambil:
Untuk mengelakkan robot atau skrip automatik daripada mendaftar, anda boleh menambah kod pengesahan pada. halaman pendaftaran. Dengan cara ini hanya pengguna manusia yang boleh lulus pengesahan CAPTCHA.
// 在注册页面添加验证码 @RequestMapping(value = "/register", method = RequestMethod.GET) public String showRegisterPage(Model model) { Captcha captcha = captchaService.generateCaptcha(); model.addAttribute("captchaId", captcha.getId()); return "register"; } // 验证验证码 @RequestMapping(value = "/register", method = RequestMethod.POST) public String register(@RequestParam("captchaId") String captchaId, @RequestParam("captcha") String captcha, User user) { boolean valid = captchaService.validateCaptcha(captchaId, captcha); if (!valid) { return "register"; } userService.register(user); return "success"; }
Anda boleh menyekat alamat IP dari mana tingkah laku pendaftaran datang. Jika alamat IP mempunyai terlalu banyak pendaftaran dalam tempoh yang singkat, anda boleh menyekat alamat IP, contohnya, menyekat alamat IP daripada dapat mendaftar untuk tempoh masa.
// 对 IP 进行限制 public boolean checkIp(String ip) { int count = userMapper.countByIp(ip, new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000)); // 限制一天内的注册行为 if (count >= 10) { // 如果一个 IP 地址在一天内注册行为超过10次,就禁止该 IP 地址进行注册行为 return false; } return true; }
Selain kod pengesahan, anda juga boleh menggunakan pengesahan gelongsor untuk menghalang pendaftaran berniat jahat oleh robot. Pengesahan leret memerlukan leret manual daripada pengguna dan bot tidak boleh mensimulasikan tingkah laku ini.
// 在注册页面添加滑动验证 @RequestMapping(value = "/register", method = RequestMethod.GET) public String showRegisterPage(Model model) { SlideVerify slideVerify = slideVerifyService.generateSlideVerify(); model.addAttribute("slideVerifyId", slideVerify.getId()); return "register"; } // 验证滑动验证 @RequestMapping(value = "/register", method = RequestMethod.POST) public String register(@RequestParam("slideVerifyId") String slideVerifyId, @RequestParam("slideVerify") String slideVerify, User user)
Untuk memastikan tingkah laku pendaftaran dijalankan oleh alamat e-mel yang sah, anda boleh menghantar e-mel kepada pengguna untuk pengesahan selepas pengguna berjaya mendaftar . Hanya pengguna yang telah lulus pengesahan e-mel boleh melakukan operasi biasa.
// 注册成功后发送验证邮件 @RequestMapping(value = "/register", method = RequestMethod.POST) public String register(User user) { userService.register(user); emailService.sendValidationEmail(user.getEmail(), user.getValidationCode()); return "success"; } // 邮箱验证 @RequestMapping(value = "/validate", method = RequestMethod.GET) public String validate(@RequestParam("email") String email, @RequestParam("code") String code) { userService.validate(email, code); return "success"; }
Jika didapati pengguna telah melakukan tingkah laku pendaftaran yang berniat jahat, maklumat pengguna boleh ditambahkan pada senarai hitam dan tingkah laku pendaftaran akan datang akan dilarang.
rreeeeAtas ialah kandungan terperinci Bagaimana untuk mengelakkan pendaftaran berniat jahat di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!