사용자 정의 드롭다운 필드에 선택할 수 없는 값이 포함되어 있습니다

이 문제는 봇이 검증기가 포함된 프론트엔드 가입 페이지를 사용하지 않기 때문이라고 생각합니다. 해당 스팸 봇들은 가입 API 엔드포인트에 자동화된 POST 요청을 보내고 있습니다. 커스텀 필드가 선택 사항인 경우, 백엔드에서 검증이 충분히 엄격하지 않아 페이로드 값이 데이터베이스에 저장되는 경우가 있을 수 있습니다.

핵심 수정 방법이 무엇인지는 정확히 모르지만, 스팸 방지 설정이나 도구가 더 필요할 가능성이 높습니다. Discourse Captcha? 또는 AI 스팸 탐지 기능을 사용해 보세요. (공개 포럼에서 AI 스팸 봇을 사용 중인데 효과가 매우 좋으며, 가입 시 선택 필드도 함께 사용하고 있습니다.)

포럼에서 영향을 받은 모든 사용자 계정을 Data explorer를 사용하여 찾을 수 있습니다. (커스텀 필드가 user_field_1이라고 가정합니다.)

SELECT user_id, value 
FROM user_custom_fields 
WHERE name = 'user_field_1' 
AND value NOT IN ('Bro', 'Sis', '')

최근 텍스트 입력에서 드롭다운으로 필드 유형을 변경했다면, 잘못된 필드 값을 가진 일부 봇 계정에 대한 설명이 될 수도 있습니다.

다음과 같은 curl 명령을 실행하여 이 문제를 테스트해 볼 수도 있습니다:

curl -i -X POST "https://FORUM_URL/users.json" \
-H "Api-Key: API_KEY" \
-H "Api-Username: system" \
-H "Content-Type: application/json" \
-d '{
  "name": "api test user",
  "email": "test_validation_bot@example.com",
  "password": "SuperSecretPassword123!",
  "username": "test_validation_bot",
  "active": true,
  "user_fields": {
    "FIELD_ID": "SomeInvalidText"
  }
}'

여기서 FORUM_URL은 포럼 주소, API_KEY/admin/api/keys에서 생성된 전역 API 키, FIELD_ID는 커스텀 필드의 ID입니다.

수정: 해당 curl 명령으로 방금 테스트해 보았는데, 실제로 이 문제를 재현할 수 있었습니다. 커스텀 사용자 필드 드롭다운에서 검증되지 않은 선택값으로 새 사용자를 가입시킬 수 있었습니다.

2개의 좋아요