Add anti-abuse: built-in captcha + garbage/duplicate guard
- CaptchaService: stateless data-protected math captcha (no Google reCAPTCHA — blocked in Iran), TTL + Persian-digit tolerant; on PostJob + PostShift - SubmissionGuard: duplicate-position detection (facility+role+date/time for shifts, facility+role+title for jobs), spam/garbage screen on title/description, double-apply prevention - InterestService: Apply events deduped so an applicant can't apply to the same listing twice - Verified: wrong captcha rejected, correct publishes, duplicate + garbage blocked Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -77,6 +77,11 @@
|
||||
<label>شرایط احراز</label>
|
||||
<textarea name="Requirements" rows="2">@Model.Requirements</textarea>
|
||||
</div>
|
||||
<div class="filter-group">
|
||||
<label>سؤال امنیتی: حاصل <strong>@Model.CaptchaQuestion</strong> چند میشود؟</label>
|
||||
<input type="text" name="CaptchaAnswer" dir="ltr" inputmode="numeric" autocomplete="off" placeholder="پاسخ" />
|
||||
<input type="hidden" name="CaptchaToken" value="@Model.CaptchaToken" />
|
||||
</div>
|
||||
<button type="submit" class="btn btn-accent btn-block btn-lg">انتشار موقعیت</button>
|
||||
</form>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user