ধরা যাক আপনি অন্য সাইটগুলিকে আপনার সাইটের "ফ্রেম" তৈরি করতে চান না <iframe>
:
<iframe src="http://example.org"></iframe>
সুতরাং আপনি আপনার সমস্ত পৃষ্ঠায় ফ্রেম বুস্টিং জাভাস্ক্রিপ্ট এন্টি ফ্রেমিং sertোকান:
/* break us out of any containing iframes */
if (top != self) { top.location.replace(self.location.href); }
অসাধারণ! এখন আপনি "বুস্ট" বা কোনও ধারণকৃত আইফ্রেমে স্বয়ংক্রিয়ভাবে বিচ্ছিন্ন হয়ে যান। একটি ছোট সমস্যা বাদে।
এটি সক্রিয় আউট হিসাবে, আপনার ফ্রেম-কীট ধ্বংস দিবসে কোড busted যাবে , যেমন এখানে দেখানো :
<script type="text/javascript">
var prevent_bust = 0
window.onbeforeunload = function() { prevent_bust++ }
setInterval(function() {
if (prevent_bust > 0) {
prevent_bust -= 2
window.top.location = 'http://example.org/page-which-responds-with-204'
}
}, 1)
</script>
এই কোডটি নিম্নলিখিতগুলি করে:
window.onbeforeunload
ইভেন্ট হ্যান্ডলারের মাধ্যমে ব্রাউজারটি বর্তমান পৃষ্ঠা থেকে দূরে নেভিগেট করার চেষ্টা করলে প্রতিবার কাউন্টার বাড়ায় incre- একটি টাইমার সেট করে যা প্রতিটি মিলিসেকেন্ডের
setInterval()
মধ্যে দিয়ে গুলি চালায় এবং যদি এটি কাউন্টারটিকে বাড়ানো দেখায়, বর্তমান অবস্থানটিকে আক্রমণকারীর নিয়ন্ত্রণের একটি সার্ভারে পরিবর্তন করে - এই সার্ভারটি HTTP স্থিতি কোড 204 সহ একটি পৃষ্ঠা পরিবেশন করে , যা ব্রাউজারটি কোথাও নেভিগেটের কারণ নয়
আমার প্রশ্নটি - এবং এটি একটি জাভাস্ক্রিপ্ট ধাঁধা একটি প্রকৃত সমস্যার চেয়ে বেশি - আপনি কীভাবে ফ্রেম-বুস্টিং বাস্টারকে পরাজিত করতে পারেন?
আমার কয়েকটি চিন্তা ছিল, কিন্তু আমার পরীক্ষায় কিছুই কার্যকর হয়নি:
onbeforeunload
মাধ্যমে ইভেন্টটি সাফ করার চেষ্টা করারonbeforeunload = null
কোনও প্রভাব ছিল নাalert()
প্রক্রিয়াটি একটি থামানো যুক্ত করে ব্যবহারকারীকে তা ঘটছে তা জানাতে দিন, তবে কোনওভাবেই কোডটিতে হস্তক্ষেপ করেন নি; ওকে ক্লিক করার ফলে বুস্টিংটি স্বাভাবিক হিসাবে চালিয়ে যেতে দেয়- আমি
setInterval()
টাইমার সাফ করার কোনও উপায় নিয়ে ভাবতে পারি না
আমি কোনও জাভাস্ক্রিপ্ট প্রোগ্রামার খুব বেশি নই, সুতরাং এখানে আমার কাছে আপনার চ্যালেঞ্জটি: আরে বাস্টার, আপনি কি ফ্রেম-বাস্টিং বুস্টারকে বুস্ট করতে পারবেন?
example.org
আরএফসি 2606 ietf.org/rfc/rfc2606.txt