Tôi tình cờ gặp SVGCaptcha , và ngay lập tức biết đó là một ý tưởng tồi.
Tôi muốn bạn chỉ ra ý tưởng này tệ đến mức nào khi trích xuất mã xác nhận từ các hình ảnh SVG mà mã tạo ra.
Một hình ảnh ví dụ trông như thế này:
Đây là nguồn của hình ảnh ví dụ:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
width="200" height="40"
> <rect x="0" y="0" width="200" height="40"
style="stroke: none; fill: none;" >
</rect> <text style="fill: #4d9363;" x="5" y="34" font-size="20" transform="translate(5, 34) rotate(-17) translate(-5, -34)">8</text>
<text style="fill: #be8b33;" x="125" y="29" font-size="21" transform="translate(125, 29) rotate(17) translate(-125, -29)">f</text>
<text style="fill: #d561ff;" x="45" y="35" font-size="20" transform="translate(45, 35) rotate(-2) translate(-45, -35)">4</text>
<text style="fill: #3de754;" x="85" y="31" font-size="21" transform="translate(85, 31) rotate(-9) translate(-85, -31)">8</text>
<text style="fill: #5ed4bf;" x="25" y="33" font-size="22" transform="translate(25, 33) rotate(16) translate(-25, -33)">u</text>
<text style="fill: #894aee;" x="105" y="28" font-size="25" transform="translate(105, 28) rotate(9) translate(-105, -28)">1</text>
<text style="fill: #e4c437;" x="65" y="32" font-size="20" transform="translate(65, 32) rotate(17) translate(-65, -32)">x</text>
</svg>
Đầu vào là hình ảnh SVG, là một định dạng văn bản.
Hạn chế thực sự duy nhất là mã của bạn phải tạo ra các giá trị theo đúng thứ tự .
Các <text>
yếu tố đầu vào theo thứ tự ngẫu nhiên, do đó bạn phải chú ý đến x
thuộc tính trong <text>
thẻ
Điểm là số byte trong mã
Vì mã hiện đang thực hiện hai biến đổi triệt tiêu lẫn nhau, bạn có thể bỏ qua chúng, nhưng nếu bạn cân nhắc chúng, hãy tiếp tục và giảm 30% so với điểm số của bạn.