HTTP_REFERER ব্যবহার করে কোনও সাইটের অভ্যন্তরীণ ব্যবহারকারীর অ্যাক্সেস অবরোধ করুন

আমি HttpServer উপর নিয়ন্ত্রণ কিন্তু অ্যাপ্লিকেশন সার্ভার বা জাভা অ্যাপ্লিকেশন উপর বসতে না কিন্তু আমি যারা অ্যাপ্লিকেশন নির্দিষ্ট পৃষ্ঠাতে সরাসরি এক্সেস ব্লক প্রয়োজন। যথাযথভাবে, আমি চাই না ব্যবহারকারীরা সরাসরি GET / POST HTTP অনুরোধগুলি যথাযত servlet এ ফরমগুলিতে অ্যাক্সেস স্বয়ংক্রিয় করে।

তাই, আমি HTTP_REFERER এর মানের ভিত্তিতে ব্যবহারকারীদের ব্লক করার সিদ্ধান্ত নিয়েছি। সব পরে, ব্যবহারকারী সাইট ভিতরে নেভিগেট করা হলে, এটি একটি উপযুক্ত <�কোড> HTTP_REFERER হবে। আচ্ছা, আমি ভাবছিলাম কি হয়েছিল।

আমি .htaccess ফাইলের মধ্যে একটি পুনর্চালনা নিয়ম বাস্তবায়ন করে বলেছেন:

RewriteEngine on 

# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteRule (servlet1|servlet2)/.+\?.+ - [F]

আমি ব্যবহারকারীদের অ্যাক্সেস নিষিদ্ধ বলে প্রত্যাশা করি যে সাইটটি নেভিগেট করে না কিন্তু কুরিস্টিং ব্যবহার করে "servlet1" বা "servlet2" সার্লেটে সরাসরি GET অনুরোধগুলি প্রকাশ করে। কিন্তু আমার প্রত্যাশা অবিচ্ছিন্নভাবে শেষ হয় কারণ নিয়মিত অভিব্যক্তি (servlet1 | servlet2) /। + +। <++। <+ কোড সবই কাজ করে নি।

আমি যে শব্দটি (servlet1 | servlet2) /। + তে পরিবর্তন করেছিলাম সেটি সত্যিই হতাশ ছিল এবং এটি এতটাই ভাল কাজ করেছে যে, ব্যবহারকারীরা সাইটটিকে নেভিগেট করলেও কোনও বিষয়ে তাদের অবরুদ্ধ করা হয়নি।

সুতরাং, আমার প্রশ্ন হল: কিভাবে আমি কোন অ্যাপ্লিকেশন সংশোধন করার জন্য কোন অ্যাক্সেস / সুবিধা / সময় আছে যদি নির্দিষ্ট পৃষ্ঠাগুলি সরাসরি এক্সেস সঙ্গে "রোবট" অনুমতি না এই জিনিসটি সম্পন্ন করতে পারেন?

0
ro fr hi

9 উত্তর

আপনি তাদের HTTP অনুরোধ দ্বারা ব্যবহারকারীদের এবং দূষিত স্ক্রিপ্ট বাদে বলতে পারবেন না। কিন্তু আপনি বিশ্লেষণ করতে পারেন যে কোনও ব্যবহারকারীরা খুব বেশি সময়ের মধ্যে অনেকগুলি পৃষ্ঠা অনুরোধ করছে এবং তাদের IP- ঠিকানাগুলি ব্লক করে।

0
যোগ

আমার কোনও সমাধান নেই, কিন্তু আমি যে রেফারারের উপর নির্ভর করি সেটি কখনোই কাজ করবে না কারণ ব্যবহারকারী-এজেন্টরা একে একে একে একে পাঠাবেন না বা এমন কিছু করতে পারবেন না যা তাদের মধ্যে প্রবেশ করবে।

0
যোগ

যদি আপনি নির্দিষ্ট পৃষ্ঠাগুলি অ্যাক্সেস করতে সার্চ ইঞ্জিন বটগুলি প্রতিরোধ করার চেষ্টা করছেন, তবে নিশ্চিত করুন যে আপনি সঠিকভাবে ফরম্যাট করা robots.txt ব্যবহার করছেন ফাইলটি

HTTP_REFERER ব্যবহার করা অসম্ভব কারণ এটি সহজেই ফ্যাক করা হয়েছে

আরেকটি বিকল্প পরিচিত বটস জন্য ব্যবহারকারী এজেন্ট স্ট্রিং পরীক্ষা করা হয় (এই কোড পরিবর্তন প্রয়োজন হতে পারে)।

0
যোগ

জাভাস্ক্রিপ্ট স্ক্রিন স্ক্র্যাপিং (বা অন্তত বিলম্বিত) প্রতিরোধ করার জন্য অন্য সহায়ক টুল। বেশিরভাগ স্বয়ংক্রিয় স্ক্র্যাপিং সরঞ্জামের একটি জাভাস্ক্রিপ্ট দোভাষী নেই, তাই আপনি লুকানো ক্ষেত্রগুলি সেটিং ইত্যাদি কাজ করতে পারেন।

সম্পাদনা করুন: এই ফিল হ্যাক নিবন্ধ এর লাইন বরাবর কিছু।

0
যোগ

জিনিষ আরো পরিষ্কার করতে:

  1. হ্যাঁ, আমি জানি যে HTTP_REFERER ব্যবহার করা সম্পূর্ণরূপে অবিশ্বস্ত এবং কিছুটা বাচ্চা কিন্তু আমি নিশ্চিত যে যারা আমার কাছ থেকে শিখেছে (আমার কাছ থেকে?) এক্সেল VBA দিয়ে অটোমেশান করতে জানেন না কিভাবে একটি HTTP_REFERER চূড়ান্ত সমাধান আছে সময়ের মধ্যে। ?

  2. আপনি
  3. আমার কাছে অ্যাপ্লিকেশন কোডটি সংশোধন করতে অ্যাক্সেস / বিশেষাধিকার নেই। রাজনীতি। তুমি কি এটা বিশ্বাস কর? সুতরাং, আমি অপেক্ষা করতে হবে যতক্ষণ না অধিকার হোল্ডার পরিবর্তনগুলি আমি অনুরোধ করি। ?

  4. আপনি
  5. পূর্ববর্তী অভিজ্ঞতাগুলি থেকে, আমি জানি যে উত্পাদনের জন্য অনুরোধকৃত পরিবর্তনগুলি দুই মাস লাগবে। না, তাদের চটকদার ভিত্তিপ্রস্তরচক্র বই তাদের মাথা বই পুস্তিকা কিছু না। ?

  6. আপনি
  7. এটি একটি ইন্ট্রানেট অ্যাপ্লিকেশন। তাই আমি আমার প্রতিপত্তি হ্রাস করার চেষ্টা অনেক বাচ্চাদের নেই। কিন্তু আমি তরুণ যে যথেষ্ট "ভারত থেকে আসা একটি খুব অভিনব বিশ্বব্যাপী পরামর্শ সেবা" এর প্রতিপত্তি হ্রাস করার চেষ্টা করার জন্য কিন্তু যেখানে, কৌতূহলীভাবে, সেখানে একক ভারতীয় কাজ না হয়। ?

  8. আপনি

এখন পর্যন্ত, সেরা উত্তরটি "মাইকেল ডে মারে" থেকে এসেছে: তাদের আইপিগুলির উপর ভিত্তি করে ব্লক ব্যবহারকারীরা। ওয়েল, আমি গতকাল যা করেছি আজ আমি আরো জেনারিক কিছু করতে চেয়েছিলাম কারণ আমার অনেক কংগার ব্যবহারকারী আছে (আইপি ঠিকানা থেকে অন্যে জাম্পিং করছেন) কারণ তারা ভিপিএন বা ডিএইচসিপি ব্যবহার করে।

0
যোগ

আমি অনুমান করছি আপনি স্ক্রিন স্ক্র্যাপিং প্রতিরোধ করার চেষ্টা করছেন?

আমার সৎ মতামত এটি HTTP_REFERER এর মান চেক করে সমাধান করার জন্য এবং ঠিক করার চেষ্টা করা কঠিন একমাত্র একটি স্টিকিং প্লাস্টার। যে কেউ যে স্বয়ংক্রিয়ভাবে জমা দেওয়াগুলি জমা করতে যাচ্ছেন সেটি সত্যিকারের রেফারারকে তাদের 'অটোমেশন' থেকে পাঠাতে যথেষ্ট দক্ষ হতে যাচ্ছে।

আপনি হার সীমিত চেষ্টা করতে পারে কিন্তু প্রকৃতপক্ষে কিছু ধরনের বল প্রয়োগ করার জন্য অ্যাপ্লিকেশনকে সংশোধন করার পরিবর্তে - এই-একটি-মানবিক বৈধতা (একটি ক্যাপচা) কিছুটা সময়ে আপনি এটি প্রতিরোধ করতে এই কঠিন সন্ধান করতে যাচ্ছেন

0
যোগ

একটি রেফারার ব্যবহার যাচাইকরণের একটি পদ্ধতি হিসাবে অত্যন্ত অবিশ্বস্ত। অন্যান্য মানুষ যেমন উল্লিখিত হয়েছে, এটি সহজেই ছলনা করা হয়। আপনার সর্বোত্তম সমাধান হল অ্যাপ্লিকেশনটি সংশোধন করা (যদি আপনি পারেন)

আপনি একটি ক্যাপচা ব্যবহার করতে পারেন, অথবা কুকি বা সেশন কুকির যে কোনও ব্যবহারকারীর সর্বশেষ পরিদর্শন (একটি সেশনটি স্পুফ করা কঠিন) এবং পৃষ্ঠা দর্শন ইতিহাসের নজর রাখুন এবং শুধুমাত্র ব্রাউজার ব্রাউজ করে ব্যবহারকারীদের অনুমতি দেয় এমন কোনও পৃষ্ঠা পৃষ্ঠাগুলি যা আপনি ব্লক করতে চান তা পেতে প্রয়োজন।

এই স্পষ্টতই আপনি প্রশ্নে আবেদন অ্যাক্সেস আছে প্রয়োজন, তবে এটি সবচেয়ে বুদ্ধিমান উপায় (সম্পূর্ণ নয়, কিন্তু আমার মতে "যথেষ্ট ভাল")।

0
যোগ

আপনি পরে কি কি অর্জন করতে একটি বিরোধী- CSRF টোকেন ব্যবহার করতে সক্ষম হতে পারে।

This article explains it in more detail: Cross-Site Request Forgeries

0
যোগ

আমি নিশ্চিত যে আমি এই এক এক সমাধান করতে পারেন, কিন্তু আমরা প্রয়োজন হিসাবে পিছনে যেতে পারেন।

প্রথমত, আমি যা বলছি তা আপনি পুনরায় বলবেন এবং আমি নিশ্চিত যে আমি স্পষ্ট। আপনি servlet1 এবং servlet2- এর অনুরোধগুলি অস্বীকৃত করতে চান, অনুরোধে সঠিক রেফারার নেই এবং এটি কি একটি কোয়েরি স্ট্রিং আছে? আমি নিশ্চিত নই (servlet1 | servlet2) /। + + .?। + কারণ এটি আপনার servlet1 এবং 2 এর অধীনে একটি ফাইলের প্রয়োজন মনে করে। আমি মনে করি আপনি হয়তো GAT এর সাথে PATH_INFO ("?" ক্যুইজ স্ট্রিং ("?" পরে) এটি প্রদর্শিত হবে যে PATH_INFO অংশ কাজ করবে কিন্তু GET ক্যোয়ারী পরীক্ষাটি হবে না। আমি script1.cgi এবং script2.cgi ব্যবহার করে আমার সার্ভারে একটি দ্রুত পরীক্ষা করেছি এবং নিম্নলিখিত নিয়মগুলি আপনি কি জন্য জিজ্ঞাসা করা হয় তা সম্পন্ন করার জন্য কাজ করেছেন। তারা অবশ্যই আমার পরিবেশের সাথে সামান্য সামান্য সম্পাদনা করেছে:

RewriteCond %{HTTP_REFERER} !^http://(www.)?example.(com|org) [NC]
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^(script1|script2)\.cgi - [F]

উপরের সমস্ত ভুল-রিফারার অনুরোধগুলি script1.cgi এবং script2.cgi- এ জমা দেওয়া হয়েছে যা একটি কোয়েরি স্ট্রিং ব্যবহার করে ডেটা জমা করার চেষ্টা করেছিল। যাইহোক, আপনি একটি path_info ব্যবহার করে তথ্য এবং ডেটা পোস্ট করতে পারেন। আমি ভুল রেফারারের সাথে ব্যবহৃত তিনটি পদ্ধতির মধ্যে কোনওর জন্য এই ফর্মটি ব্যবহার করি:

RewriteCond %{HTTP_REFERER} !^http://(www.)?example.(com|org) [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule ^(script1|script2)\.cgi - [F]

উদাহরণস্বরূপ, আপনি কাজ করার চেষ্টা করছেন, আমি মনে করি এই আপনি কি চান:

RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule (servlet1|servlet2)\b - [F]

আশা করি এই অন্তত আপনার লক্ষ্য কাছাকাছি আপনি পায়। দয়া করে আমাদের এটি কিভাবে কাজ করে তা জানান, আমি আপনার সমস্যা আগ্রহী।

(বিটিউডব্লিউ, আমি সম্মত হচ্ছি যে রেফারার ব্লকিংটি দুর্বল নিরাপত্তা, তবে আমি বুঝতে পারি যে, আপেক্ষিক বাহিনী অকার্যকর এবং আংশিক সমাধান কখনো কখনো, যা আপনি ইতিমধ্যেই স্বীকার করছেন বলে মনে হয়।)

0
যোগ