Звернутися до підтримки

Відповідаємо електронною поштою, зазвичай протягом двох днів.

Google reCAPTCHA перевіряє це звернення на зловживання; дані передаються до Google. Скрипт завантажується лише тоді, коли ви відкриваєте цю форму.

← Усі записи

Файл, який ми назвали зламаним

У теці зображень цього проєкту лежить файл stats2.gif. Він важить 366 байтів, датований березнем 2018 року і трапляється рівно в нулі рядків початкового коду. 23 серпня 2026 року його віддали 2735 разів із кодом 200, зі 145 різних сайтів — а за повний оберт журналу доступу з 858.

Файл, на який ніхто не посилається, який забирають тисячі разів на день із сотень чужих сторінок. Очевидне прочитання: стара вставка, яку ніхто не замінив, тихо віддає статичну картинку там, де колись був лічильник. Статичні файли повністю обходять PHP. Ніщо, що потрапляє прямо до Apache, не може нічого порахувати.

Тож ми написали інструмент. Він читає з журналу кожну сторінку, що посилається, забирає кожну тим самим перевіряльником, який сайт уже використовує для діагностики вставок — з його захистом від SSRF, бо ці адреси приходять із журналу, а не від нас — і дивиться, чи рахує на сторінці хоч щось насправді.

Усі 858 сторінок

уже рахують (поруч працює вставка)501
взагалі недосяжні288
значок є, номера лічильника в коді немає69
лише старий значок, нічого не рахує0

Жодної. Сімдесят п’ять хвилин завантажень, щоб не знайти нічого.

Вимірювання, яке зайняло б секунду

stats2.gif має розмір 13 на 14 пікселів.

Це не лічильник і не значок із числом. Це маленька піктограма статистики — саме те, що відтворює дизайн 981 у нинішній галереї, і коментар у його власному коді описує попередника точно: жодного видимого числа, лише маленький знак, який після натискання відкриває вашу статистику. Він ніколи не мав рахувати. На тих сторінках завжди рахувало щось інше.

І зламаним файл також не є. Він відповідає кодом 200, із заголовком Last-Modified з 2018 року та річним терміном життя в кеші. Він робить свою роботу.

Один виклик getimagesize() на початку закрив би всю цю лінію розслідування до того, як інструмент було написано. Натомість питання звучало «чому цей файл так часто забирають», прийнята відповідь була «бо це зламаний лічильник», і все подальше випливало з припущення, якого ніхто не перевірив.

Єдине, що справді зламане

З усього цього журнал показав один справжній дефект: одна адреса, запитувана десять разів на день, усі з кодом 410, у якій цілий фрагмент вставки опинився всередині href посилання. Хтось вставив код у поле, що екранує HTML. Його лічильник живий і рахує — в нікуди веде тільки його власне посилання на його власну статистику.

Інструмент лишається, без шляху запису. Питання було законним, відповідь — «ні», і те й те варто зберегти, щоб нікому не довелося ставити його вручну ще раз.

Реклама