আমি কীভাবে কোনও পাওয়ার ব্যবহারকারীকে আমার এজ্যাক্স ফাংশনগুলি কল করতে বাধা দিতে পারি?


12

আমার কাছে এমন একটি সাইট রয়েছে যা বেশ কয়েকটি ফাংশন সম্পাদন করতে এজাক্স কলগুলি ব্যবহার করে। তাদের কাছে ওয়েব ব্রাউজারের কলটি আবার স্ক্রিপ্টে ফিরে এসেছে - ajax.php। যদিও আমি ডেটা প্রেরণ করতে এবং এজাক্স স্ক্রিপ্ট কল করতে পারে এমন কমান্ড সীমাবদ্ধ করার জন্য পোস্ট ডেটা ব্যবহার করি, তবে সাইটটিকে সামাল দেওয়ার চেষ্টা করার জন্য ব্যবহারকারীদের অ্যাজাক্স কলগুলি স্পোফিং থেকে আটকানোর আসলে কিছুই নেই। ব্যবহারকারীদের কল কল্পনা করা থেকে বিরত করার জন্য কি কোনও কম্বল উপায় আছে? এজ্যাক্স কলটি আসলে আমার ওয়েবসাইট থেকে আসে এবং অন্য কোনও স্ক্রিপ্ট বা সাইট থেকে আসে না তা নিশ্চিত করার কোনও উপায় আছে কি?

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


অ্যাজাক্স কলগুলি কি সম্পূর্ণরূপে অযৌক্তিক? আপনি কি প্রতিটি জন্য সেশন তৈরি? আপত্তিজনক নিদর্শন আছে? এবং সমস্যাটি নির্দিষ্ট ম্যানিপুলেশনগুলি বা আরও বেশি লোড এটি সাইটে যুক্ত করে?
artlung

আপনি আরও নির্দিষ্ট পোস্ট করতে পারেন দয়া করে? এজেএক্স কলগুলি কী করছে? এগুলি কী কী কারচুপি করছে? স্ক্রিপ্টটি এজেএক্সের বাইরে ডাকা হলে কী সমস্যা হয়?
অসন্তুষ্ট গোয়াট

আমি সত্যিই কোনও নির্দিষ্ট পরিস্থিতিতে জিজ্ঞাসা করছি না, বরং অনেক পরিস্থিতিতে প্রযোজ্য সাধারণ সমাধানের জন্য। যদি এমন কোনও সমাধান হয়, যা দেখে মনে হয় না।
ড্যানিয়েল বিঙ্গহাম

উত্তর:


12

আমি বিশ্বাস করি না এটি নির্ভরযোগ্যভাবে করার কোনও উপায় আছে, যেহেতু আপনি যে কোনও তথ্যই প্রেরণ করতে পারেন তা ব্যবহারকারী কতটা চালাক।

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


2
+1 .. ঠিক তেমনভাবে লোকেরা তাদের ব্রাউজারের প্রদর্শিত কোনও কিছুর স্থানীয় অনুলিপিগুলি সংরক্ষণ করা থেকে রক্ষা করা অসম্ভব। আপনি তাদের ছেড়ে দিতে পারেন এবং তারা এটি বের করার আগে তারা অন্য কিছুতে যেতে পারেন কিনা তা দেখার জন্য এটি আরও প্রতিযোগিতা।
টিম পোস্ট

6

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

ঠিক কোনও কারণেই আপনার কোনও জাভাস্ক্রিপ্ট বৈধতা যাচাই করা বা না করা আপনি সর্বদা সার্ভারে জমা দেওয়া ডেটা যাচাই করা উচিত।

এটি সার্ভার-সাইড স্ক্রিপ্টটি কী করছে এবং কী ভুল হতে পারে ঠিক তা পরিষ্কার নয় তবে ব্যবহারকারীরা যদি আপনার স্ক্রিপ্টটিকে খারাপ ডেটা দিয়ে কল করে "সাইটটি পরিচালনা করতে সক্ষম হন" তবে আপনি এটি ভুল করছেন।

সম্ভবত সবচেয়ে ভাল সমাধান হ'ল প্রমাণীকরণের কিছু ফর্ম চালু করা।


3

সুতরাং আপনি মূলত কেবলমাত্র এজেএক্স অনুরোধগুলির প্রতিক্রিয়াতে ajax.php সীমাবদ্ধ করতে চান?

আমি কোনও পিএইচপি বিশেষজ্ঞ নই, তবে কোনও প্রদত্ত অনুরোধটি এজেএক্স থেকে এসেছে বা "নিয়মিত" ব্রাউজারের অনুরোধটি এর মানটি পরীক্ষা করে দেখছে কিনা তা নির্ধারণ করা সম্ভব বলে মনে হচ্ছে $_SERVER['HTTP_X_REQUESTED_WITH']

উৎস


2
ভাল কথা, আপত্তিজনক ধারণা করে যে অ্যাজাক্স ব্যবহার করে না বা এইচটিটিপি শিরোনামটি জাল করে না
অ্যাডাম

1

অন্য কেউ যেমন উল্লেখ করেছে ... এজ্যাক্স কলগুলি কেবলমাত্র $ _GET বা $ _POST এর রিসিভার, সুতরাং আমার পন্থাটি সর্বদা কেবল তাদের সাথেই আচরণ করা উচিত আমি কোনও ক্রিয়া পৃষ্ঠা এবং ইনপুটটি ফিল্টার / স্যানিটাইজ করতাম। উদাহরণস্বরূপ আপনি যদি এক মাসের মতো আশা করেন তার কিছুটা ভিন্নতা থাকে এবং আপনি জানেন যে এটি সর্বদা "জানুয়ারি, ফেব্রুয়ারি, মার্চ ..." ফর্ম্যাটে থাকে তবে আপনি প্রত্যাশিত মানগুলির একটি অ্যারে সেট করতে পারেন এবং এর বিপরীতে ফিল্টার করতে পারেন। মেলে না এমন কোনও কিছু ফাঁদে ফেলুন এবং Bচ্ছিকভাবে "Bzzt ... খেলার জন্য ধন্যবাদ ..." এর মতো কিছু ফেলে দিন

আমি এমন উদাহরণের কথা ভাবতে পারি না যেখানে আমার এজাক্স স্ক্রিপ্টটি ফর্ম জমা দেওয়ার চেয়ে আরও সুরক্ষিত হওয়া দরকার।

আছে HTH


"বাজেট" এর জন্য +1 - যা "বাজেট - খেলার জন্য ধন্যবাদ!" এর প্রসঙ্গে যে এতটাই মজাদার হয়ে ওঠে! ব্যবহারকারীর মেশিনে একটি কুকি সেট চাপিয়ে তিন ঘন্টার নিষেধাজ্ঞার সাথে কালো হয়ে যাওয়ার সাথে সাথে ধীরে ধীরে বিবর্ণ হয়ে যায় (আমি নিশ্চিত তারা মেসেজটি পাবে)
ড্যান্লেফ্রি

0

আমি মনে করি আপনার সমাধানের একটি বড় অংশটি নির্দিষ্ট ব্যবহারকারীর আঙুলের ছাপ থেকে ট্র্যাফিককে সীমাবদ্ধ করবে । আইপি অ্যাড্রেস, ব্যবহারকারী এজেন্ট স্ট্রিং এবং ডেটা প্রেরণ করা হতে পারে has

এছাড়াও, যে পৃষ্ঠাটি এজাক্সকে এজ্যাক্স ফিরিয়ে আনা ডেটা নিকটস্থ করে তাকে বাঁধাই সহায়ক হতে পারে। সুতরাং প্রশ্নে থাকা পৃষ্ঠায়, পৃষ্ঠা লোডে একটি সেশন কী প্রেরণ করুন যা সেশনের জন্য ভাল X, প্রতিটি এজাক্স অনুরোধের জন্য আপনার জাভাস্ক্রিপ্টের জন্য সেই কীটি পাস করতে হবে বা এজাক্স একটি ব্যর্থতা ফিরে আসবে। একবার আপনার পৃষ্ঠার হিট X+1Ajax কল, কিছু পদক্ষেপ (হয়তো ক্যাপচা? এমনকি একটি ভালো কিছু করতে ব্যবহারকারী জোর mousemoveবা tapরিস্টার্ট তারপর নতুন সেশন কী (মূল Ajax থেকে ব্যান্ড আউট) তারে পাঠানোর আগে ইউএ উপর নির্ভর করে ইভেন্ট) প্রক্রিয়া.

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.