এসকিউএল ইনজেকশনের জন্য দুর্বল কোড লেখা বন্ধ করতে আমি কীভাবে প্রোগ্রামার পেতে পারি?


11

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

class DivtoggleController extends Zend_Controller_Action {

    public function closeAction() {
        /* ... code removed for brevity ... */

        $req = $this->getRequest();
        $formData = $req->getPost();

        $d = $formData['div'];
        $i = $formData['id'];

        $dm = new Model_DivtoggleManager();
        $rs = $dm->setDivToggleById($d, $i);

    }

}


class Model_DivtoggleManager extends Zend_Db_Table {

    public function setDivToggleById($div, $id) {
        $result = $this->getAdapter()->query(
           "update div_toggle set " . $div . "=1 where id=" . $id
        );
    }

}

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


কেন এটি সাধারণ কুকিতে সংরক্ষণ করা হয় না?
অন্ধকার রাত

1
@ ডার্কনাইট, আপনি ধরে নিচ্ছেন কুকি সংরক্ষণ করার জন্য একটি সেশন রয়েছে। আছে কিনা তা বৃহত্তর সুরক্ষা ইস্যু সম্পর্কিত অপ্রাসঙ্গিক।
রজার হলিবার্টন

উত্তর:


24

আপনি তাদের শেখাতে পারেন। সকলেই শুরুতে এটি করে, এমনকি আপনিও। যদি এই ধরণের কোড এটিকে উত্পাদন করে তোলে তবে এটি সিনিয়র লোকদের দোষ; জুনিয়র না

সম্পাদনা:

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


2
+1 সম্মত হতে হবে। আপনি কোনও (সম্ভবত) জুনিয়র প্রোগ্রামারকে দোষ দিতে পারবেন না কারণ আপনি এমন একটি স্তরের জ্ঞান অর্জন করেছেন যা তাদের কাছে নেই। (তাই বলা হয়, আপনি চাই চাই যেমন বিষয় ভাল এই দিন এবং বয়স জানা যায় ভাবতে তারপর আবার, আমি চাই। চাই ভাবতে যে আমি প্রতিভাবান এবং ভালো খুঁজছেন, ইত্যাদি ছিল না) :-)
জন পার্কার

মোটামুটি যথেষ্ট বিবৃতি statement আমার ধারণা, ম্যানেজমেন্ট কেন প্রবীণ প্রোগ্রামারদের দ্বারা অনুমোদিত নয় এমন প্রযোজনায় কোড আনার বিষয়ে জোর দিবে তা জিজ্ঞাসা করে আমার একটি ফলোআপ প্রশ্ন করা উচিত। সামান্য সুরক্ষা ইস্যুতে কি আমি আমার চাকরি ঝুঁকিপূর্ণ করব?
রজার হলিবার্টন

1
@Roger Halliburton: ওয়েল, যদি সেই সুরক্ষা সমস্যা নেই একরকম শোষিত পান তখন, কি খারাপ যে ঘটতে পারে? এবং কেন সুরক্ষা সমস্যাগুলি দেখানো আপনার কাজ ব্যয় করতে পারে? ব্যবস্থাপনা কি এই বিষয়টি মোকাবেলা করতে চায় না?
হতাশ

1
@ রোজার - আপনি হ্যাক না হওয়া পর্যন্ত এটি কেবল নাবালিকান। :) আমি মনে করি যে পর্যালোচনা ছাড়াই কোড উত্পাদনে রাখা (বিকাশকারীর স্তর কোনও ব্যাপার নয়) ব্যর্থতা। দুর্ভাগ্যক্রমে, এটি প্রচুর সংস্থায় একটি খুব সাধারণ অভ্যাস; এবং, আইম, পরিচালনা কোডগুলি পর্যালোচনার মতো জিনিসের মূল্য দিতে শুরু করার আগে এটি সাধারণত একটি বড় ওহ $ 4! টি লাগে।
জন ক্রাফট

1
@ রোজার: সমস্ত কোডের পর্যালোচনা করা উচিত, "জুনিয়র" প্রোগ্রামারদের দ্বারা লিখিত কোড নয়। এমনকি সিনিয়র প্রোগ্রামাররা ভুল করে।
ডিন হার্ডিং

20

তাদের কোডটিকে তাদের চোখের সামনে হ্যাক করুন তারপরে কীভাবে এটি ঠিক করতে হয় তা তাদের দেখান। যতক্ষণ না তারা বোঝে ততক্ষণে।


4
কাউকে ইমেইল রোজ সকালে: "। প্রসঙ্গক্রমে, আমি আপনার ডাটাবেস আবার গত রাতে অন্য এসকিউএল ইনজেকশন দুর্বলতার আপনি আপনার কোড বাকি মাধ্যমে বাদ আমি জানি আপনি কত ডাটাবেসের ব্যাকআপ পুনরূদ্ধার মত: D '
অ্যান্ট

2
@ অ্যান্ট: সুন্দর থাকুন। খুব শীঘ্রই এটি কি পরে নির্ধারিত ব্যাকআপ, খুব শীঘ্রই আগে নয়।
ডোনাল ফেলো

@ ডোনাল: ব্যাকআপের খুব শীঘ্রই এটি করুন, তারপরে তাদের ব্যাকআপটি ব্যর্থ হয়ে দিন এবং রাতারাতি ব্যাকআপটি পুনরুদ্ধার করার আগে তাদের বাকি দিনের জন্য ঘামতে দিন।
জ্বলছে

8

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

আপনি অতিরিক্ত কাস্টম লাইব্রেরি ব্যবহারের আদেশও দিতে পারেন যা এটি আপনার জন্য পরিচালনা করে তবে এটি কেবলমাত্র একটি গৌণ সমাধান কারণ তারা যখন আরও সুবিধাজনক হয়ে উঠবে তখন কাস্টম অনুসন্ধানগুলি চালানো নিশ্চিত হবে।

আপনার যদি সংস্থান আছে, দলের আরও সিনিয়র সদস্যদের প্রতিশ্রুতিবদ্ধ হওয়ার আগে তাদের পার্থক্য যাচাই করা নিশ্চিত করাও কার্যকর হতে পারে।

জ্ঞানই শক্তি!


3
আপনার সংস্থায় যোগদানের আগে তাদের নিড়ানি দেওয়া ভাল। যদি আপনি কাউকে এসকিউএল ব্যবহার করে এমন কোনও লেখার জন্য নিয়োগ দিচ্ছেন, অক্ষমতা নিয়ে ইনজেকশন সীমানা সম্পর্কে সাক্ষাত্কারের প্রশ্ন জিজ্ঞাসা করছেন না।
উবল

আমি সাধারণত একমত হই, তবে খুব স্মার্ট এবং উচ্চাকাঙ্ক্ষী জুনিয়র ভাড়া অনেক বেশি, "এন বছরের অভিজ্ঞতার সাথে পিএইচপি বিকাশকারী" এর চেয়ে অনেক সস্তা, এটির চেয়ে ভাল হওয়ার নিশ্চয়তা নেই isn't স্মার্ট জুনিয়র ডেভস এই জিনিসগুলি সত্যিই দ্রুত বাছতে পারে এবং বেশ সম্পদ হতে পারে।
ইয়ান

3

ধরে নিই যে এটি যে নিরাপত্তাহীনতাটিকে অন্যরা উল্লেখ করেছে, যে কোনও স্তরের বিকাশকারী হিসাবে, এটি সহজেই ভুলে যাওয়া সহজ যে getPost () প্রথমে ডেটা সুরক্ষিত করে না।

এর চারপাশে একটি উপায়:

  1. এমন একটি ক্লাস লিখুন যা সমস্ত পোষ্ট / জিইটি ডেটা পায় এবং এটিকে 'সিকিউর_ডেটা' নামক সিঙ্গলটন ক্লাসের মতো লিখুন। তারপরে পোষ্ট / জিইটি অ্যারেগুলি সাফ করুন।
  2. বিকাশকারীদের পোষ্ট / জিইটি অ্যারে নয়, 'অনিরাপদ_ডাটা' অ্যারে থেকে পোষ্ট / জিইটি ডেটা উদ্ধার করতে হয়।

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


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

@RogerHalliburton অবশ্যই সবকিছু সমাধান না, কিন্তু এটা (, নকশা প্যাটার্ন কেমন যদি আপনি হবে) একটি ধারণা বরং একটি আউট সম্পূর্ণরূপে fleshed নিরাপত্তা ব্যবস্থা চেয়ে অনিরাপদ ডেটা করতে বর্ণন অনিরাপদ।
ড্যান ব্লাউস

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

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

আমি স্পলস্কিকে কোনও উপাসনার উপরে রাখি না। এগুলি এমন বিকাশকারী যারা সহজেই বেমানান ট্যাবগুলিকে উপেক্ষা করেন, তারা "অনিরাপদ" নামক কোনও জিনিস ব্যবহারের বিষয়ে দু'বার ভাবেন না।
রজার হলিবার্টন

1

ওয়েব সুরক্ষা সম্পর্কে আমি যে সেরা গাইডটি পড়েছি তা হ'ল এই রুবি অন রেলস সুরক্ষা গাইড। এটি রেল অন রেল হলেও, প্রচুর ধারণাটি কোনও ওয়েব বিকাশের ক্ষেত্রে প্রয়োগ হয় to আমি নতুন কাউকে এই গাইডটি পড়তে উত্সাহিত করব।


2
সকলেই জানেন রুবি নিরাপদ নয়।
রজার হলিবার্টন

5
@ রোজার: সত্য বা নাও হতে পারে এমন সমস্ত ধরণের জিনিস "সবাই জানেন"। আমি প্রোগ্রামিংয়ে বাস্তবতা-ভিত্তিক পদ্ধতির পক্ষে, শ্রুতি-ভিত্তিক নয়।
ডোনাল ফেলো

0

আপনি উপরে উল্লিখিত কোডটি একটি এসকিউএল ইনজেকশন আক্রমণে সংবেদনশীল, কারণ আপনি কোয়েরিতে যে HTTP ইনপুট ব্যবহার করছেন তা mysql_real_escape_stringবা অন্য কোনও উপায়ে পরিষ্কার করা হয়নি not


1
ওহ, আমি ভেবেছিলাম আমরা এটি পরীক্ষার প্রশ্নের মতো উত্তর
রায়ান

ডাউনভোটগুলি কিছুটা খোঁড়া, যেহেতু প্রশ্নের শব্দটির পরিবর্তন পূর্ববর্তী পোস্টে হয়েছিল: পি
রায়ান

0

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

যদি তারা উপরোক্ত সমস্ত কিছু সত্ত্বেও গোলযোগ অব্যাহত রাখে (আপনি সম্ভবত "লাইভ" সন্ধান করার চেয়ে তাদের প্রতিশ্রুতি ইত্যাদির উপর নজর দিতে চান) তবে সমস্যাটি হ'ল আপনি তাদের পরামর্শদাতা হিসাবে ব্যর্থ করছেন, বা তা তাদের সম্ভবত জীবিকা নির্বাহের জন্য আরও উপযুক্ত কিছু খুঁজে বের করা দরকার।

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