পিএইচপি ওয়েবসার্সগুলি সুরক্ষিত করা হচ্ছে


31

পিএইচপি অ্যাপ্লিকেশনগুলির গড় সুরক্ষা সমস্যার তুলনায় উচ্চতর খ্যাতি রয়েছে। অ্যাপ্লিকেশনটি সম্ভব হিসাবে নিরাপদ কিনা তা নিশ্চিত করার জন্য আপনি কোন কনফিগারেশন কৌশল ব্যবহার করেন?

আমি এই জাতীয় ধারণা খুঁজছি:

আমি সাধারণত লিনাক্স ব্যবহার করি তবে উইন্ডোজ সমাধানগুলিও নির্দ্বিধায় জানায়।

উত্তর:


15
  1. আপনার পিএইচপি স্ক্রিপ্টগুলি তাদের বাড়ির ডিরেক্টরিতে এবং শেষ পর্যন্ত অতিরিক্ত অ্যাপ্লিকেশন ডিরেক্টরিগুলিতে সীমাবদ্ধ করতে ওপেন_বেসির নির্দেশিকা ব্যবহার করুন। এটি নিজেই খুব দক্ষ।

  2. কঠোর পিএইচপি ব্যবহার করুন কারণ এর জন্য কোনও খরচ হয় না এবং এটি সহায়তা করতে পারে।

  3. পিএইচপি স্ক্রিপ্টগুলি ফাইলের মালিক হিসাবে চালিত করতে suPHP ব্যবহার করুন (ওয়েবসাইটের জন্য একজন ব্যবহারকারী) এবং as 777 এর মতো খারাপ অনুমতিযুক্ত ফাইলগুলি এড়িয়ে চলুন ... এসএইচপিএইচপি আপনাকে পিএইচপি.আইএনই ওয়েবসাইটে প্রতি অনুমতি দিতে পারে যাতে একটি সাইটের বোকা প্রয়োজনীয়তা সব ধ্বংস না।

  4. মোড_সিকিউরিটি একটি বড় প্লাস তবে ভালভাবে ব্যবহার এবং কনফিগার করা দরকার।


কিছু খারাপ সাইটগুলিতে আসলেই রেজিস্টার_গ্লোবাল এবং ফপেন দরকার হয় তাই আপনি এসপিএইচপি দিয়ে প্রতি সাইট পিএইচপি.আইএনই ব্যবহার করেন। একটি সাইট কেবল কামিকাজে যেতে পারে এবং অন্যগুলি (প্রায়) পুরোপুরি নিরাপদ থাকতে পারে।
এন্টোইন বেনকামাউন

4
যদি তারা রেজিস্টার_গ্লোবাল এবং ফপেন ব্যবহার করেন তবে এটির মানটি এত খারাপ যে আপনি এগুলি ব্যবহার করে পুনর্বিবেচনা করতে চাইতে পারেন :)
ডেভিড পশলে

যদি তারা 150 € / mo প্রদান করে তবে আপনি পুনর্বিবেচনা করবেন না।
এন্টোইন বেনকামাউন

3

আমার অভিজ্ঞতায়, পিএইচপি-ভিত্তিক ওয়েব সাইটের বেশিরভাগ দুর্বলতাগুলি পিএইচপি নিজেই ত্রুটিগুলি না করে দুর্বল (সাইট) ডিজাইনের ফলাফল।

কিছু দ্রুত টিপস:

  • সর্বজনীনভাবে ফিল্টার ইনপুট, এস্কিপ আউটপুট। ক্লারিফাইটন: ফিল্টারটি পলায়নের অর্থ নয়, এর অর্থ "যদি এই ব্যবহারকারীর ইনপুটটিতে আমি মৎসকন্য কিছু খুঁজে পাই, জমাটি ব্যর্থ হতে পারে এবং ব্যবহারকারীকে পুনরায় ফর্ম্যাট করতে বলি" "
  • EscapeeshellCmd () ব্যবহার না করে , কেবল কোনও ব্যবহারকারী ইনপুট শেলটিতে চালিত হওয়ার অনুমতি দেয় না । এটি বিপজ্জনক এবং সম্ভবত বাস্তবে কখনও প্রয়োজন হয় না।
  • কোনও প্রোডাকশন সাইটে phpinfo () এর মতো ফাংশনগুলি কল করবেন না (বা যদি আপনি করেন তবে নীচে দেখুন *)।
  • ওয়েব অ্যাপ্লিকেশন ডিজাইন করার সময়, সর্বদা বিবেচনা করুন "এটি কি কোনও সম্ভাব্য আক্রমণকারী ভেক্টর?" বলুন, এসকিউএল ইঞ্জেকশন। উত্তরটি যদি "হ্যাঁ" হয় তবে তাৎক্ষণিকভাবে প্লাগ করুন - "ঠিক আছে, বলবেন না, আমি এটি পরে বৈশিষ্ট্য হিসাবে বিকাশে যুক্ত করব।" সুরক্ষা কখনও বৈশিষ্ট্য নয়।
  • ব্যবহারকারীর কাছে কখনও কাঁচা ত্রুটি আউটপুট করবেন না; এর অর্থ php.ini এর প্রদর্শনের_সীমা সেট করা = বন্ধ, লগ_অর্থগুলি = চালু। ফাঁদ রান-টাইম ত্রুটি এবং আউটপুট সুন্দর কিছু। টুইটারের তিমির উদাহরণ হিসাবে নিন: এটি ব্যবহারকারীকে ডিবাগ-স্তরের তথ্য দেয় না, এটি কেবল "ওফস, কিছু ভেঙে গেছে, দয়া করে রিফ্রেশ করুন" বলে says

* আপনি "সিকিওরিং phpinfo (), বাছাই করা" নামে একটি ছোট পোস্টে ঝুঁকি নিতে পারেন এবং মন্তব্যগুলি অবশ্যই পড়তে ভুলবেন না http://egovsergo.com/2009/04/03/protecting-your-phpinfo/ এটি আমি একটি দ্রুত ধারণা (কিছুটা) phpinfo () রক্ষা করতে হয়েছিল যদি আমি কোনওভাবে কোনও প্রোডাকশন সাইটে এটিকে সরিয়ে দিতে ভুলে যাই।

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


আমার প্রশ্নটি কীভাবে আপনার সার্ভারকে খারাপভাবে লিখিত পিএইচপি থেকে রক্ষা করবে সে সম্পর্কে আরও ছিল। :) আমি এই বলতে চাইনি যে পিএইচপি নিজেই অনিরাপদ ছিল, এর চেয়ে কম অভিজ্ঞ বিকাশকারীদের আকর্ষণ করে এবং স্ট্যান্ডার্ড লাইব্রেরিতে সমস্ত ব্যবহারকারীকে সুরক্ষিত লাইব্রেরির চেয়ে প্রতিটি কল রক্ষা করা তাদের মনে রাখা দরকার। এটি একটি খুব দরকারী উত্তর হিসাবে +1।
ডেভিড প্যাশলে

আমি এই ধারণাটি পেয়েছি এবং সে অনুযায়ী জবাব দিয়েছি :) মন্তব্যের জন্য ধন্যবাদ! স্পষ্টতই আমি এখানে এটি intoুকতে পারি না, তবে সেগুলি কিছু বড় গর্ত। আপনার যদি আরও নির্দিষ্ট প্রশ্ন থাকে তবে আপনি অবশ্যই তাদের স্ট্যাক ওভারফ্লোতে ভঙ্গ করতে পারেন এবং আমি এবং অন্য প্রত্যেকে অবদান রাখব। (এবং এটির মূল্যের জন্য আমি একটি জেডসিই)।
মিসানফোর্ড

3

অন্যান্য পরামিতি যা পিএইচপি শক্ত করতে পরিবর্তন করা উচিত:

safe_mode = Off
register_globals = Off
expose_php = Off
allow_url_fopen = Off
allow_url_include = Off
log_errors = On
error_log = /var/log/phperror.log
display_errors = Off
enable_dl = Off
disable_functions="popen,exec,system,passthru,proc_open,shell_exec,show_source,phpinfo"

ফাইল /var/log/phperror.log এ সমস্ত পিএইচপি ত্রুটি সংরক্ষণ করুন :

touch /var/log/phperror.log
chmod 666 /var/log/phperror.log

1

আমি আমার /etc/apt/sources.lst এ ডটদেব সংগ্রহস্থলগুলি যুক্ত করেছি

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

যেহেতু তারা পিএইচপি / অ্যাপাচি / মাইএসকিএল প্যাচ করে ডেবিয়ানের থেকে অনেক বেশি ঘন ঘন।


1

open_basedir"প্রতি সাইট" ভিত্তিতে স্থাপনের কথা বিবেচনা করুন । open_basedirএকটি php.ini সেটিংস যা আপনার স্ক্রিপ্টগুলিকে কোনও সংজ্ঞায়িত সাদা তালিকার বাইরে ফাইল অ্যাক্সেস করা থেকে বিরত রাখে। যদি আপনার সার্ভার বেশ কয়েকটি সাইট হোস্ট করে তবে এটি একটি সাইটকে অন্য সাইট থেকে ডাটাবেস সেটিংস পড়তে বাধা দেবে। এটি কোনও পিএইচপি স্ক্রিপ্টকে মূল সিস্টেম ফাইলগুলিতে অ্যাক্সেস / পরিবর্তন করতে বাধা দেবে। ওপেন ভিত্তিক সেট আপ করা সহজ, php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/listপ্রতিটি অ্যাপাচি ভোস্টে কেবল " " লাইন যুক্ত করুন ।

এছাড়াও সমস্ত সাইট / ফোল্ডারগুলির জন্য পিএইচপি স্ক্রিপ্ট ইঞ্জিন বন্ধ করার কথা বিবেচনা করুন যাতে পিএইচপি স্ক্রিপ্টগুলি থাকা উচিত নয় (যেমন একটি আপলোডকৃত চিত্রগুলির ফোল্ডার)। আবার, এটি সাধারণ, পিএইচপি প্রয়োজন হয় না এমন কোনও অ্যাপাচি ভার্চুয়ালহোস্টগুলিতে "php_admin_value ইঞ্জিন বন্ধ" যুক্ত করুন। কোনও ডিরেক্টরিতে পিএইচপি অক্ষম করতে, একই জিনিসটিকে একটি ডিরেক্টরি ট্যাগে রাখুন।

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

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

সুসিন, হার্ডেনডেপিএইচপি, মোড_সিকিউরিটি এবং এর মতো সমস্তগুলি মূল্যবান, তবে এগুলি পরিবর্তে নয়, শক্তভাবে লকড কনফিগারেশন ছাড়াও এগুলি ব্যবহার করুন।


0

সুহসিনের পরিবর্তে যথেষ্ট পারফরম্যান্স ব্যয় হয়েছে, সুতরাং "ব্যয় কিছুই নয়" মন্তব্যটি কিছুটা বন্ধ।


2
একটি দ্রুত, হ্যাক ওয়েবসাইট ভাল কি? :) hardened-php.net/suhosin/benchmark.html এক বেঞ্চমার্ক উপর 8.85% ধীর দাড়ায়। এটি প্রদত্ত সুরক্ষা সুবিধার জন্য এটি গ্রহণযোগ্য হতে পারে। এটি সম্ভবত একটি উত্তর চেয়ে মন্তব্য করা উচিত ছিল।
ডেভিড পাশলে

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

0

আপনি কিছু বেসিক ফায়ারওয়াল / টপোলজি পরামর্শ খুঁজছেন? ওয়াশড ইন্টারনেট থেকে পিএইচপি ওয়েবসার্ভারে সরাসরি অ্যাক্সেস রোধ করতে পাউন্ডের মতো জিনিসগুলি ব্যবহার করার ধারণাটি আমার পছন্দ হয় । এইভাবে আপনি আপনার নেটওয়ার্কের অন্যান্য অংশ থেকেও ওয়েবসারভারকে আলাদা করতে পারেন।


না, আমি পিএইচপি রানটাইমটির সুরক্ষা উন্নত করার উপায় খুঁজছি।
ডেভিড পাশলে

0

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


1
স্রেফ পালনের জন্য কী এস্কেপশেল সিএমডি () ব্যবহার করা হয় না? এটি কোনও প্রক্রিয়া চালানোর কোনও উপায় সরবরাহ করে না। কেউ সমস্যা তৈরি করতে কীভাবে এটি ব্যবহার করতে পারে?
ডেভিড পাশলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.