اخیراً هنگام بررسی Event Handlerهای مرورگر به oncontentvisibilityautostatechange برخوردم که هنوز در بسیاری از Cheat Sheetها و Payload Listها کمتر دیده میشود.
🧩 این Event چه زمانی اجرا میشود؟
این Event مربوط به ویژگی CSS زیر است:
content-visibility: auto;
وقتی مرورگر تصمیم میگیرد یک عنصر را برای بهبود Performance رندر کند یا از رندر خارج کند، وضعیت visibility آن عنصر تغییر میکند و Event اجرا میشود.
به زبان ساده:
- ✅ وقتی عنصر وارد محدوده قابل مشاهده (Viewport) شود.
- ✅ وقتی کاربر Scroll کند و عنصر از دید خارج یا وارد دید شود.
- ✅ وقتی مرورگر وضعیت رندر عنصر را تغییر دهد.
در این حالت Event contentvisibilityautostatechange فراخوانی میشود.
نمونه:
<div
style="content-visibility:auto"
oncontentvisibilityautostatechange="alert(origin)">
Test
</div>
چرا برای تست XSS جالب است؟
بسیاری از فیلترها فقط Eventهای معروف را مسدود میکنند:
onloadonerroronclickonmouseover
اما Eventهای جدیدتر مرورگرها گاهی از قلم میافتند و ممکن است در برخی سناریوها بتوانند فیلترهای ضعیف یا Blacklist-Based را دور بزنند.
این به معنی وجود آسیبپذیری نیست؛ اما هنگام تست ورودیهای HTML Injection و XSS ارزش بررسی دارد.
⚠️ نکته مهم
این Event در همه مرورگرها پشتیبانی نمیشود و برای اجرا شدن معمولاً نیاز است عنصر از content-visibility: auto استفاده کند و وضعیت visibility آن تغییر کند.