ვებფორმების დაცვა სპამისგან – cookie-ებისა და უცხოური CAPTCHA სერვისების გარეშე
გამოქვეყნდა
ყველა საკონტაქტო ფორმა სპამს იზიდავს. ჩვეულებრივი გამოსავალია დიდი პროვაიდერის CAPTCHA. ის ვიზიტორებს დროს ართმევს, ხშირად აყენებს cookie-ებს და სკრიპტებს საზღვარგარეთ არსებული სერვერებიდან ტვირთავს – საქართველოს კანონმდებლობით ეს შეიძლება იყოს მონაცემთა გადაცემა, რომელსაც ნებართვა სჭირდება (დაწვრილებით).
ჩვენ ფორმებს სხვაგვარად ვიცავთ: ALTCHA-თი, proof-of-work მეთოდით, ჩვენს საკუთარ სერვერზე.
გამოთვლითი ამოცანა თავსატეხის ნაცვლად
ფორმის ჩატვირთვისას ბრაუზერი იღებს მცირე გამოთვლით ამოცანას და მას ფონურ რეჟიმში ხსნის, სანამ ვიზიტორი ფორმას ავსებს. არავის უწევს შუქნიშნების არჩევა ან დამახინჯებული ასოების აკრეფა. ერთი შეტყობინებისთვის დანახარჯი უმნიშვნელოა; ვინც ათასობით შეტყობინებას აგზავნის, მას ათასჯერ იხდის. სერვერისთვის ამოხსნის შემოწმება თითქმის არაფერი ჯდება.
ჩვენი ALTCHA სერვისი
ღია ALTCHA ფორმატის საფუძველზე შევქმენით სერვისი, რომელიც საკუთარ სერვერზე მუშაობს, და ღია კოდის სახით გამოვაქვეყნეთ. ის ერთდროულად ნებისმიერი რაოდენობის ვებგვერდს იცავს და მცირე ვებინტერფეისით იმართება:
- ხელმოწერილი ამოცანები: ყოველი ამოცანა ხელმოწერილია (HMAC), მიბმულია იმ ვებგვერდზე, რომლისთვისაც გაიცა, და მოქმედებს ზუსტად ერთხელ – გადატვირთვის შემდეგაც.
- ფორმები ბექენდის გარეშე: სერვისი შემოწმებულ შეტყობინებას ელფოსტით უგზავნის ვებგვერდის მიმღებს, ამიტომ სტატიკურ ვებგვერდს საკუთარი სერვერული კოდი არ სჭირდება.
- ბიულეტენის გამოწერა: შემოწმებული გამოწერები Notifuse-ის სიაში ხვდება, რომელიც დადასტურების წერილს (double opt-in) აგზავნის.
- საკუთარი ბექენდი: საკუთარი ბექენდის მქონე აპლიკაციები ამოხსნას სერვისის ინტერფეისით ამოწმებენ.
- მრავალშრიანი დაცვა: მოთხოვნების სიხშირის შეზღუდვა თითოეული კლიენტისა და ვებგვერდისთვის, ხაფანგი ველი (honeypot) და მკაცრი შემოწმება, საიდან მოდის მოთხოვნა.
- კონფიდენციალურობა: არც cookie-ები, არც მდგომარეობა ბრაუზერში, არც ფაილების ატვირთვა.
- ექსპლუატაცია: სტატისტიკა ვებინტერფეისში, Prometheus-ის მეტრიკები, მდგომარეობის შემოწმება და ყველა მონაცემი ერთ SQLite ფაილში.
ვიჯეტსაც თავად სერვისი აწვდის – ინგლისურად ან მისი ყველა 68 ენით.
ორი სტრიქონი გვერდზე
<script type="module" src="https://altcha.example.com/widget.js"></script>
<form action="https://altcha.example.com/submit" method="post">
<input name="email" type="email" required>
<textarea name="message" required></textarea>
<altcha-widget challenge="https://altcha.example.com/challenge"></altcha-widget>
<button type="submit">Send</button>
</form>
არც აწყობის ეტაპია საჭირო, არც პაკეტის დაყენება: იგივე სტრიქონები მუშაობს ხელით დაწერილ HTML-ში, Astro-სა და Angular-ში.
გამოყენებაში
საკონტაქტო ფორმები და ბიულეტენის გამოწერა esn.ge-ზე, epicsoft.one-ზე და ჩვენი დომენების გასაყიდ გვერდებზე ამ სერვისით მუშაობს.
წყაროს კოდი განთავსებულია GitLab-სა და GitHub-ზე, იმიჯი – Docker Hub-ზე, MIT ლიცენზიით. პროექტი ALTCHA-ს პროექტთან დაკავშირებული არ არის; ის იყენებს მის ვიჯეტსა და ბიბლიოთეკას, რომლებიც MIT ლიცენზიით ვრცელდება.
სიამოვნებით დავაყენებთ სერვისს თქვენი ვებგვერდისთვისაც.