একটি সম্ভাব্য বিপজ্জনক অনুরোধ ath ক্লায়েন্ট (*) এর কাছ থেকে মূল্য মান সনাক্ত করা হয়েছিল


218

আমি বরং স্ব-ব্যাখ্যামূলক ত্রুটিটি পাচ্ছি:

একটি সম্ভাব্য বিপজ্জনক অনুরোধ.পথের মান ক্লায়েন্ট (*) থেকে সনাক্ত করা হয়েছিল।

*অনুরোধ ইউআরএলে সমস্যাটি এই কারণে :

https://stackoverflow.com/Search/test*/0/1/10/1

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

ইউআরএলে এই বিশেষ অক্ষরগুলিকে অনুমতি দেওয়ার কোনও সহজ উপায় আছে? আমি চেষ্টা করেছি web.config, এর কোনও পরিবর্তন হয়নি।

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

অ্যাপ্লিকেশনটি নিজেই একটি c# asp.netওয়েবফর্ম অ্যাপ্লিকেশন যা উপরের দুর্দান্ত ইউআরএল উত্পাদন করতে রাউটিং ব্যবহার করে।


1
আপনার পৃষ্ঠার ValidateRequest=falseশীর্ষে আছে?
নিল নাইট

আমি জানি না কী কারণে ওয়েবসাইটটি অভ্যন্তরীণভাবে একটি পুনর্নির্দেশের চেষ্টা করছে যা ' লোকালহোস্ট /: // লোকালহোস্ট / মাই ওয়েবসাইট নাম' এর মতো একটি URL তৈরি করেছিল যা আমাকে একই ত্রুটি দিয়েছিল। আমি জানি না কেন এএসপি.এন.পি পাইপলাইন এটিকে একটি বিপজ্জনক অনুরোধের URL হিসাবে বিবেচনা করে।
আরবিটি

উত্তর:


97

*চরিত্র URL এর পাথ অনুমোদিত নয়, কিন্তু সেখানে ক্যোয়েরি স্ট্রিং এটি ব্যবহার কোন সমস্যা নেই:

http://localhost:3286/Search/?q=test*

এটি কোনও এনকোডিংয়ের সমস্যা নয়, *কোনও ইউআরএলটিতে চরিত্রটির কোনও বিশেষ অর্থ নেই, তাই আপনি ইউআরএল এটি এনকোড করেছেন কিনা তা কোনও ব্যাপার নয়। আপনাকে এটি আলাদা স্কিম ব্যবহার করে এনকড করতে হবে এবং তারপরে এটি ডিকোড করুন।

উদাহরণস্বরূপ একটি স্বেচ্ছাসেবক চরিত্রকে পালানোর চরিত্র হিসাবে ব্যবহার করা:

query = query.Replace("x", "xxx").Replace("y", "xxy").Replace("*", "xyy");

এবং ডিকোডিং:

query = query.Replace("xyy", "*").Replace("xxy", "y").Replace("xxx", "x");

15
"এক্সএক্সএক্সএক্স" "এক্সজি" "এক্সআই" গেমটি বেশ চালাক। পাঠকদের বিভ্রান্ত না করার জন্য আপনি এর পিছনে যুক্তিটি বিশদভাবে জানাতে চাইতে পারেন।
সিম্পলবার

2
অনুরোধটি ছিল এটি ব্যবহারের জন্য PATHএবং ক্যোরিস্ট্রিংয়ে নয়।
হুগো ডেলসিং

আমি একই দৃশ্যে দৌড়েছি যেখানে আমার পরামিতিগুলির একটির URL ছিল। এমনকি ইউআরএল সঠিকভাবে এনকোড করা অবস্থায়ও আমি এই ত্রুটিটি পেয়ে যাব। অবশেষে আমি বেস 64 কে প্যারামিটারটি এনকোড করেছি (এবং আমার এপিআইতে ডিকোড) যা যা চলছে তা বের করার চেষ্টা করার চেয়ে অনেক সহজ ছিল। সম্ভবত এটি একটি ভাল পছন্দ যা আপনার নিজস্ব প্রতিস্থাপনের রুটিনও বাস্তবায়ন করে।
স্পোকেনডজে

1
আপনি কি একটি সহজ এনকোডিং স্কিম হিসাবে aa<=> aএবং ab<=> ব্যবহার করতে পারবেন না *?
জ্যারেড

আপাতত এটি আমাকে বাঁচিয়েছে, ধন্যবাদ, তবে সঠিক সময়ে আমি এই পরামর্শটি যাচাই করতে চাই: stackoverflow.com/a/603962/1830909 এবং আপনার চিন্তা শুনে আমি গ্ল্যাড হয়ে যাব।
কিউমাস্টার

316

আপনি যদি নেট নেট using.০ ব্যবহার করছেন তবে আপনার ওয়েবকনফাইগের মাধ্যমে এই ইউআরএলকে অনুমতি দেওয়া উচিত

<system.web>
    <httpRuntime 
            requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,:,\,?" />
</system.web>

দ্রষ্টব্য, আমি কেবল তারকাচিহ্ন (*) সরিয়েছি, মূল ডিফল্ট স্ট্রিংটি হ'ল:

<httpRuntime 
          requestPathInvalidCharacters="&lt;,&gt;,*,%,&amp;,:,\,?" />

আরও তথ্যের জন্য এই প্রশ্নটি দেখুন ।


5
কোনও ক্রিয়াতে এমভিসি বৈশিষ্ট্য ব্যবহার করে এটি করার কোনও উপায় যাতে আমার পুরো অ্যাপ্লিকেশনটির জন্য এটি বন্ধ না করতে হয়? : এই উত্তর এখানে অনুরূপ stackoverflow.com/a/1540976/298758
longda

4
@ লংগদা: সম্ভবত আপনার প্রয়োজনীয় ইউআরএলের জন্য <অবস্থানের পথ = "আমার / পথ"> উপাদানটি এটিকে মোড়ানো চেষ্টা করুন। প্রতিবিম্বটি ব্যবহার করা বৈশ্বিক দৃষ্টিকোণ থেকে যুক্তিসঙ্গতভাবে সহজ হবে, তবে আমি প্রতি নিয়ামক / ক্রিয়া ভিত্তিতে এটি সেট করার বিষয়ে নিশ্চিত নই sure প্রশ্ন শুরু হতে পারে?
ডেভ ট্রান্সম

এটি কেবল এএসপিএনটি এমভিসি প্রকল্পে কাজ করছে না, ভিউস্টার্টে বিন্যাস নির্ধারণের জন্য রান প্রক্রিয়া গ্রহণ করা এই ত্রুটিটি পেয়েছে: পথে অবৈধ চরিত্র।
কিউমাস্টার

7

আমার জন্য, আমি ওয়েব এপিআই ২.০ দিয়ে নেট নেট .২.২.২ নিয়ে কাজ করছি, আমারও একই ত্রুটি রয়েছে, আমি কেবল এটি অনুরোধপথে প্যাথআইএনওটিএলচারার্স = "" যোগ করে সেট করেছিপ্যাটিআইএনওটিএলচারচারার আপনাকে অনুমতিপ্রাপ্ত অক্ষর সেট করতে হবে অন্যথায় আপনাকে অক্ষর মুছে ফেলতে হবে যা এই সমস্যা কারণ।

<system.web>
     <httpRuntime targetFramework="4.5.2" requestPathInvalidCharacters="" />
     <pages  >
      <namespaces>
     ....
 </namespaces>
    </pages> 
  </system.web>

** মনে রাখবেন যে এটি একটি ভাল অনুশীলন নয়, কোনও পরামিতিটির সাথে একটি পোস্ট হতে পারে কারণ কোনও বস্তুর বৈশিষ্ট্য আরও ভাল বা বিশেষ অক্ষরটি এনকোড করার চেষ্টা করা যেতে পারে। - রেস্ট এপি ডিজাইনের জন্য সর্বোত্তম অনুশীলন অনুসন্ধান করার পরে, আমি আবিষ্কার করেছি যে অনুসন্ধান, বাছাই এবং পৃষ্ঠায়িতকরণের জন্য, আমরা কোয়েরি প্যারামিটারটিকে এই জাতীয়ভাবে পরিচালনা করতে হবে

/companies?search=Digital%26Mckinsey

এবং সার্ভারে আমরা কোনওভাবেই ইউআরএলকে% 26 এর মাধ্যমে এনকোড করে এবং পুনঃস্থাপন করার সময় সমস্যার সমাধান করি এবং আমরা সঠিক পরামিতি ডিজিটাল ও ম্যাকিনসে পাই

এই লিঙ্কটি বিশ্রামের ওয়েব ডিজাইনিংয়ের সেরা অনুশীলনে সহায়তা করতে পারে https://hackernoon.com/restful-api-designing-guidlines-the-best-practices-60e1d954e7c9


6

আপনার রুটের মানটি এনকোড করা উচিত এবং তারপরে (যদি প্রয়োজন হয়) সন্ধানের আগে মানটি ডিকোড করুন।


আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ. আপনি কী বোঝাতে চেয়েছেন যে এফেক্টিভলে * এর মতো আইটেমগুলির প্রতিস্থাপন করছেন এবং আপনি যখন এটি পড়ছেন তখন সেগুলি প্রতিস্থাপন করবেন?

আপনি মানগুলি এনকোডিং এবং ডিকোডিংয়ের একটি কোড উদাহরণ দেখাতে পারেন?
Ciaran গ্যালাগার

1

আমার জন্য, ইউআরএল টাইপ করার সময়, একজন ব্যবহারকারী দুর্ঘটনাক্রমে একটি এর পরিবর্তে / ব্যবহার করেছিলেন? কোয়েরি পরামিতি শুরু করতে

উদাহরণ:

url.com/endpoint/parameter=SomeValue&otherparameter=Another+value

যা হওয়া উচিত ছিল:

url.com/endpoint?parameter=SomeValue&otherparameter=Another+value


হ্যাঁ, আমার জন্য এমনকি একই url.com/endpoint¶meter=SomeValue&otherparameter=AnotherValue
Bhargav Konda

0

এই ব্যতিক্রমটি আমার আবেদনে এসেছিল এবং এটি বিভ্রান্তিকর ছিল।

আমি যখন একটি JSON অ্যারে বস্তুটি পাস করে একটি এজাক্স পদ্ধতি কল ব্যবহার করে একটি .aspx পৃষ্ঠা ওয়েব পদ্ধতি কল করছিলাম তখন এটি নিক্ষেপ করা হয়েছিল। ওয়েব পৃষ্ঠা পদ্ধতি স্বাক্ষরটিতে দৃ strongly়ভাবে টাইপ করা .NET অবজেক্ট, অর্ডারডেটেলস এর অ্যারে রয়েছে। প্রকৃত_কোটি সম্পত্তিটি একটি আন্ত হিসাবে সংজ্ঞায়িত করা হয়েছিল, এবং জেএসওএন অবজেক্ট প্রকৃত_কটি সম্পত্তি "4" (অতিরিক্ত স্থানের অক্ষর) ধারণ করে। অতিরিক্ত স্থান অপসারণ করার পরে, রূপান্তরটি সম্ভব হয়েছিল, ওয়েব পৃষ্ঠা পদ্ধতিটি সফলভাবে অজ্যাক্স কল দ্বারা পৌঁছেছিল।


0

যদি আইআইএস এক্সপ্রেস হয় তবে ওয়েব প্রকল্পের সার্ভারটিকে স্থানীয় আইআইএস হিসাবে যথাযথভাবে সেট করার চেষ্টা করুন। প্রকল্পের url সঠিক কিনা এবং ভার্চুয়াল ডিরেক্টরি তৈরি করে তা নিশ্চিত হন।


0

ইউনিফর্ম রিসোর্স লোকেটার (ইউআরএল) এর সাথে কাজ করার সময় কিছু বাক্য গঠন মান রয়েছে , এই বিশেষ পরিস্থিতিতে আমরা সংরক্ষিত অক্ষরগুলি নিয়ে কাজ করছি

আপ হিসাবে জন্য RFC 3986 , সংরক্ষিত অক্ষরগুলি জেনেরিক সিনট্যাক্স দ্বারা, প্রতিটি স্কিম-নির্দিষ্ট সিনট্যাক্স দ্বারা বা ইউআরআই-এর ডিসিফেরেন্সিং অ্যালগরিদমের প্রয়োগ-নির্দিষ্ট সিনট্যাক্স দ্বারা সীমানা নির্ধারণ করতে পারে (বা নাও); এবং অস্ট্রিক (*) একটি সংরক্ষিত অক্ষর।

সবচেয়ে ভাল অনুশীলন হ'ল আনরক্ষিত অক্ষর ব্যবহার করা ইউআরএলগুলিতে বা আপনি এটি এনকোড করার চেষ্টা করতে পারেন।

খনন চালিয়ে যান:


1
URL এ সংরক্ষিত অক্ষরটি যদি শতাংশ-এনকোডযুক্ত থাকে, উদাহরণস্বরূপ, এর %25পরিবর্তে, এই ত্রুটিটি ঘটে %তখন আইআইএস এই ত্রুটিটি পুরোপুরি বৈধ URL এর জন্য ফিরিয়ে দিতে পারে।
ফ্লোরিয়ান শীতকাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.