CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ سيڪيورٽي: بهترين طريقا
John Squirrels
سطح
San Francisco

جاوا ۾ سيڪيورٽي: بهترين طريقا

گروپ ۾ شايع ٿيل
سرور ايپليڪيشنن ۾ سڀ کان اهم ميٽرڪ سيڪيورٽي آهي. هي هڪ قسم جي غير فنڪشنل گهرج آهي . جاوا ۾ سيڪيورٽي: بهترين طريقا - 1سيڪيورٽي ۾ ڪيترائي حصا شامل آھن. يقينن، سڀني سڃاتل سڪيورٽي اصولن ۽ حفاظتي قدمن کي مڪمل طور تي ڍڪڻ لاءِ هڪ کان وڌيڪ آرٽيڪل لڳندا، ان ڪري اسان سڀ کان اهم تي غور ڪنداسين. هڪ شخص جيڪو هن موضوع ۾ چڱيءَ طرح ڄاڻو آهي اهو سڀ لاڳاپيل عمل قائم ڪري سگهي ٿو، نئين حفاظتي سوراخ ٺاهڻ کان پاسو ڪري سگهي ٿو، ۽ ڪنهن به ٽيم تي گهربل هوندو. يقينا، توهان کي اهو نه سوچڻ گهرجي ته توهان جي درخواست 100٪ محفوظ ٿي ويندي جيڪڏهن توهان انهن طريقن جي پيروي ڪندا. نه! پر اهو ضرور انهن سان وڌيڪ محفوظ ٿيندو. اچو ته هلون.

1. جاوا ٻولي جي سطح تي سيڪيورٽي فراهم ڪريو

سڀ کان پهريان، جاوا ۾ سيڪيورٽي صحيح ٻولي جي صلاحيتن جي سطح تي شروع ٿئي ٿي. اسان ڇا ڪريون ها جيڪڏهن ڪو به رسائي تبديل ڪندڙ نه هجي ها؟ ان ۾ انارڪي کانسواءِ ڪجهه به نه هوندو. پروگرامنگ ٻولي اسان کي محفوظ ڪوڊ لکڻ ۾ مدد ڪري ٿي ۽ ڪيترن ئي ضمني حفاظتي خصوصيتن جو استعمال پڻ ڪري ٿي:
  1. مضبوط ٽائپنگ. جاوا هڪ statically ٽائپ ٿيل ٻولي آهي. اهو رن ٽائم تي قسم سان لاڳاپيل غلطيون پڪڙڻ ممڪن بڻائي ٿو.
  2. رسائي تبديل ڪندڙ. اهي اسان کي ضرورت مطابق ڪلاس، طريقن ۽ شعبن تائين رسائي کي ترتيب ڏيڻ جي اجازت ڏين ٿا.
  3. خودڪار ياداشت جو انتظام. ان لاءِ، جاوا ڊولپرز وٽ ھڪڙو گند ڪچرو ڪليڪٽر آھي جيڪو اسان کي دستي طور تي ھر شيءِ کي ترتيب ڏيڻ کان آزاد ڪري ٿو. ها، مسئلا ڪڏهن ڪڏهن پيدا ٿيندا آهن.
  4. بائيٽ ڪوڊ جي تصديق : جاوا کي بائيٽ ڪوڊ ۾ مرتب ڪيو ويو آهي، جيڪو ان تي عمل ڪرڻ کان اڳ رن ٽائم طرفان چيڪ ڪيو ويندو آهي.
اضافي طور تي، Oracle جي حفاظتي سفارشون آهن . يقينن، اهو وڏي ٻولي ۾ نه لکيو ويو آهي ۽ توهان ان کي پڙهڻ دوران ڪيترائي ڀيرا ننڊ ڪري سگهو ٿا، پر اهو ان جي لائق آهي. خاص طور تي، جاوا SE لاءِ محفوظ ڪوڊنگ گائيڊ لائنز جو حقدار دستاويز اهم آهي. اهو مشورو ڏئي ٿو ته ڪيئن لکجي محفوظ ڪوڊ. هي دستاويز انتهائي مفيد معلومات جي وڏي مقدار کي پهچائي ٿو. جيڪڏهن توهان وٽ موقعو آهي، توهان کي ضرور پڙهڻ گهرجي. ھن مواد ۾ توھان جي دلچسپي وڌائڻ لاءِ، ھتي ڪجھ دلچسپ صلاحون آھن:
  1. سيڪيورٽي حساس طبقن کي ترتيب ڏيڻ کان پاسو ڪريو. سيريلائيزيشن سيريل ٿيل فائل ۾ ڪلاس انٽرفيس کي بي نقاب ڪري ٿو، سيريل ٿيل ڊيٽا جو ذڪر نه ڪرڻ.
  2. ڪوشش ڪريو ڊيٽا لاء تبديل ٿيندڙ طبقن کان بچڻ. هي غير تبديل ٿيندڙ طبقن جا سڀ فائدا مهيا ڪري ٿو (مثال طور ٿريڊ جي حفاظت). جيڪڏهن توهان وٽ هڪ ميوٽيڪل اعتراض آهي، اهو ٿي سگهي ٿو اڻڄاتل رويي جي ڪري.
  3. واپسي تبديل ٿيندڙ شين جون ڪاپيون ٺاهيو. جيڪڏهن هڪ طريقو هڪ اندروني ميوٽبل اعتراض ڏانهن حوالو ڏئي ٿو، پوء ڪلائنٽ ڪوڊ اعتراض جي اندروني حالت کي تبديل ڪري سگهي ٿو.
  4. ۽ ايئن…
بنيادي طور تي، جاوا SE لاءِ محفوظ ڪوڊنگ ھدايتون جاوا ڪوڊ کي صحيح ۽ محفوظ طريقي سان لکڻ جي طريقن ۽ چالن جو مجموعو آھي.

2. SQL انجيڪشن جي ڪمزورين کي ختم ڪريو

هي هڪ خاص قسم جي ڪمزوري آهي. اهو خاص آهي ڇاڪاڻ ته اهو ٻنهي مان هڪ مشهور ۽ سڀ کان وڌيڪ عام ڪمزورين مان هڪ آهي. جيڪڏهن توهان ڪڏهن به ڪمپيوٽر جي سيڪيورٽي ۾ دلچسپي نه ڪئي آهي، ته توهان ان جي باري ۾ نه ڄاڻندا. SQL انجيڪشن ڇا آهي؟ هي هڪ ڊيٽابيس جو حملو آهي جنهن ۾ شامل آهي اضافي SQL ڪوڊ داخل ڪرڻ جتي ان جي توقع نه آهي. فرض ڪريو اسان وٽ ھڪڙو طريقو آھي جيڪو ڊيٽابيس کي پڇڻ لاء ڪجھ قسم جي پيٽرولر کي قبول ڪري ٿو. مثال طور، هڪ صارف نالو. ڪمزور ڪوڊ هن طرح ڪجهه نظر ايندو:
// This method retrieves from the database all users with a certain name
public List findByFirstName(String firstName) throws SQLException {
   // Connect to the database
   Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);

   // Compose a SQL database query with our firstName
   String query = "SELECT * FROM USERS WHERE firstName = " + firstName;

   // Execute the query
   Statement statement = connection.createStatement();
   ResultSet result = statement.executeQuery(query);

   // Use mapToUsers to convert the ResultSet into a collection of users.
   return mapToUsers(result);
}

private List mapToUsers(ResultSet resultSet) {
   // Converts to a collection of users
}
هن مثال ۾، هڪ SQL سوال اڳ ۾ هڪ الڳ لائن تي تيار ڪيو ويو آهي. پوء ڇا مسئلو آهي، صحيح؟ ٿي سگهي ٿو مسئلو اهو آهي ته اهو بهتر ٿيندو String.format استعمال ڪرڻ ؟ نه؟ خير، پوء ڇا؟ اچو ته پاڻ کي ٽيسٽ ڪندڙ جي بوٽن ۾ رکون ۽ سوچيو ته ڇا ٿي سگهي ٿو پهرين نالي جي قيمت جي طور تي . مثال طور:
  1. اسان پاس ڪري سگهون ٿا جيڪو توقع آهي - هڪ صارف نالو. پوء ڊيٽابيس سڀني صارفين کي ان نالي سان واپس آڻيندو.
  2. اسان هڪ خالي تار پاس ڪري سگهون ٿا. پوء سڀني صارفين کي واپس ڪيو ويندو.
  3. پر اسان ھيٺين کي به پاس ڪري سگھون ٿا: "'; DROP TABLE USERS؛". ۽ هتي اسان وٽ هاڻي مسئلا آهن. هي سوال ڊيٽابيس مان هڪ ٽيبل کي حذف ڪندو. سڀني ڊيٽا سان گڏ. اهو سڀ.
ڇا توهان تصور ڪري سگهو ٿا ته اهي مسئلا پيدا ٿيندا؟ ان کان سواء، توهان لکي سگهو ٿا جيڪو توهان چاهيو ٿا. توھان سڀني صارفين جا نالا تبديل ڪري سگھو ٿا. توھان انھن جي ايڊريس کي ختم ڪري سگھو ٿا. تخريبڪاريءَ جي گنجائش تمام گهڻي آهي. هن کان بچڻ لاء، توهان کي هڪ تيار ڪيل سوال جي انجڻ کي روڪڻ جي ضرورت آهي ۽ ان جي بدران سوالن کي استعمال ڪندي پيٽرولر ٺاهي. ڊيٽابيس سوالن کي ٺاهڻ جو اهو واحد طريقو هجڻ گهرجي. اهو آهي ته توهان هن نقصان کي ختم ڪري سگهو ٿا. مثال طور:
// This method retrieves from the database all users with a certain name
public List findByFirstName(String firstName) throws SQLException {
   // Connect to the database
   Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);

   // Create a parameterized query.
   String query = "SELECT * FROM USERS WHERE firstName = ?";

   // Create a prepared statement with the parameterized query
   PreparedStatement statement = connection.prepareStatement(query);

   // Pass the parameter's value
   statement.setString(1, firstName);

   // Execute the query
   ResultSet result = statement.executeQuery(query);

   // Use mapToUsers to convert the ResultSet into a collection of users.
   return mapToUsers(result);
}

private List mapToUsers(ResultSet resultSet) {
   // Converts to a collection of users
}
هن طريقي سان نقصان کان بچي ويندي آهي. انهن لاءِ جيڪي هن مضمون ۾ وڌيڪ اونهائي ڪرڻ چاهيندا آهن، هتي هڪ بهترين مثال آهي . توهان ڪيئن ڄاڻو ٿا جڏهن توهان هن نقصان کي سمجهي رهيا آهيو؟ جيڪڏهن توهان هيٺ ڏنل مزاحيه ۾ مذاق حاصل ڪريو ٿا، ته شايد توهان کي واضح طور تي سمجهه ۾ اچي ته هي نقصان ڇا آهي: ڊيجاوا ۾ سيڪيورٽي: بهترين طريقا - 2

3. انحصار کي اسڪين ڪريو ۽ انھن کي اپڊيٽ رکو

هن جو مطلب ڇا آهي؟ جيڪڏهن توهان کي خبر ناهي ته انحصار ڇا آهي، مان وضاحت ڪندس. انحصار هڪ JAR آرڪائيو آهي ڪوڊ سان جيڪو ڪنهن ٻئي جي حل کي ٻيهر استعمال ڪرڻ لاءِ خودڪار بلڊ سسٽم (Maven، Gradle، Ant) استعمال ڪندي پروجيڪٽ سان ڳنڍيل آهي. مثال طور، پروجيڪٽ Lombok ، جيڪو اسان لاءِ رن ٽائم ۾ گيٽر، سيٽرز وغيره ٺاهي ٿو. وڏيون ايپليڪيشنون ٿي سگھن ٿيون گھڻا ۽ گھڻا انحصار. ڪجھ منتقلي آھن (اھو آھي، ھر ھڪڙي انحصار ٿي سگھي ٿو پنھنجي انحصار، وغيره). نتيجي طور، حملو ڪندڙ کليل ذريعن جي انحصار تي وڌيڪ ڌيان ڏئي رهيا آهن، ڇاڪاڻ ته اهي باقاعده استعمال ڪيا ويندا آهن ۽ ڪيترن ئي گراهڪن کي انهن جي ڪري مسئلا ٿي سگهن ٿا. اهو ضروري آهي ته پڪ ڪرڻ ضروري آهي ته پوري انحصار واري وڻ ۾ ڪو به سڃاتل نقصان نه آهي (ها، اهو هڪ وڻ وانگر ڏسڻ ۾ اچي ٿو). هن کي ڪرڻ جا ڪيترائي طريقا آهن.

انحصار جي نگراني لاءِ Snyk استعمال ڪريو

Snyk سڀني پروجيڪٽ جي انحصار کي چيڪ ڪري ٿو ۽ ڄاتل سڃاتل نقصانن کي نشانو بڻائي ٿو. توهان Snyk تي رجسٽر ڪري سگهو ٿا ۽ GitHub ذريعي پنهنجا پروجيڪٽ درآمد ڪري سگهو ٿا. جاوا ۾ سيڪيورٽي: بهترين طريقا - 3انهي سان گڏ، جيئن توهان مٿي ڏنل تصوير مان ڏسي سگهو ٿا، جيڪڏهن هڪ نئين ورزن ۾ هڪ ڪمزوري مقرر ڪئي وئي آهي، ته پوء Snyk درست پيش ڪندي ۽ پل جي درخواست ٺاهي. توھان ان کي استعمال ڪري سگھوٿا مفت ۾ اوپن سورس منصوبن لاءِ. منصوبا باقاعده وقفن تي اسڪين ڪيا ويندا آهن، مثال طور هفتي ۾ هڪ ڀيرو، مهيني ۾ هڪ ڀيرو. مون رجسٽرڊ ڪيو ۽ شامل ڪيو منهنجون سڀئي عوامي ذخيرا Snyk اسڪين ۾ (انهي بابت ڪجهه به خطرناڪ ناهي، ڇاڪاڻ ته اهي اڳ ۾ ئي سڀني لاءِ عوامي آهن). Snyk پوءِ ڏيکاريو اسڪين جو نتيجو: جاوا ۾ سيڪيورٽي: بهترين طريقا - 4۽ ٿوري دير کان پوءِ، Snyk-bot ڪيترن ئي پل جي درخواستن کي تيار ڪيو منصوبن ۾ جتي انحصار کي اپڊيٽ ڪرڻ جي ضرورت آهي: جاوا ۾ سيڪيورٽي: بهترين طريقا - 5۽ پڻ: جاوا ۾ سيڪيورٽي: بهترين طريقا - 6هي هڪ بهترين اوزار آهي نئين نسخن لاءِ ڪمزورين کي ڳولڻ ۽ نگراني جي اپڊيٽ لاءِ.

استعمال ڪريو GitHub سيڪيورٽي ليب

GitHub تي ڪم ڪندڙ ڪو به ان جي تعمير ٿيل اوزار مان فائدو وٺي سگھي ٿو. توهان هن طريقي بابت وڌيڪ پڙهي سگهو ٿا انهن جي بلاگ پوسٽ ۾ GitHub سيڪيورٽي ليب جو اعلان ڪرڻ . هي اوزار، يقينا، Snyk کان وڌيڪ آسان آهي، پر توهان کي ضرور ان کي نظرانداز نه ڪرڻ گهرجي. وڌيڪ ڇا آهي، ڄاڻايل خطرن جو تعداد صرف وڌندو، تنهنڪري ٻنهي Snyk ۽ GitHub سيڪيورٽي ليب کي وڌائڻ ۽ بهتر ڪرڻ جاري رهندو.

Sonatype DepShield کي فعال ڪريو

جيڪڏهن توهان GitHub استعمال ڪندا آهيو پنهنجي ذخيرن کي ذخيرو ڪرڻ لاءِ، توهان شامل ڪري سگهو ٿا سوناتائپ ڊيپ شيلڊ، مارڪيٽ پلیس ۾ ايپليڪيشنن مان هڪ، توهان جي منصوبن ۾. اهو پڻ استعمال ڪري سگهجي ٿو منصوبن کي اسڪين ڪرڻ لاء انحصار لاء. ان کان علاوه، جيڪڏهن اهو ڪجهه ڳولي ٿو، هڪ GitHub مسئلو پيدا ڪيو ويندو مناسب وضاحت سان جيئن هيٺ ڏيکاريل آهي:جاوا ۾ سيڪيورٽي: بهترين طريقا - 7

4. رازداري ڊيٽا کي احتياط سان سنڀاليو

اسان متبادل طور لفظ استعمال ڪري سگهون ٿا "حساس ڊيٽا". گراهڪ جي ذاتي معلومات، ڪريڊٽ ڪارڊ نمبر، ۽ ٻين حساس معلومات کي ليڪ ڪرڻ سان ناقابل تلافي نقصان ٿي سگھي ٿو. سڀ کان پهريان، توهان جي ايپليڪيشن جي ڊيزائن تي هڪ ويجهي نظر وٺو ۽ اهو طئي ڪيو ته توهان کي واقعي هن يا انهي ڊيٽا جي ضرورت آهي. شايد توهان کي اصل ۾ ڪجهه ڊيٽا جي ضرورت ناهي جيڪا توهان وٽ آهي - ڊيٽا جيڪا شامل ڪئي وئي هئي مستقبل لاءِ جيڪا نه آئي آهي ۽ اچڻ جو امڪان ناهي. اضافي طور تي، توهان ڪيترائي اڻڄاڻ طور تي لاگنگ ذريعي اهڙي ڊيٽا لڪيندا آهيو. حساس ڊيٽا کي توهان جي لاگن ۾ داخل ٿيڻ کان روڪڻ جو هڪ آسان طريقو آهي toString() ڊومين ادارن جي طريقن (جهڙوڪ استعمال ڪندڙ، شاگرد، استاد، وغيره). اهو توهان کي حادثاتي طور تي رازداري شعبن جي پيداوار کان بچائيندو. جيڪڏهن توهان Lombok استعمال ڪريو ٿا toString() طريقو پيدا ڪرڻ لاءِ، توهان استعمال ڪري سگهو ٿا @ToString.Exclude تشريح ڪنهن فيلڊ کي toString() طريقي جي آئوٽ پٽ ۾ استعمال ٿيڻ کان روڪڻ لاءِ . انهي سان گڏ، ٻاهرين دنيا ڏانهن ڊيٽا موڪلڻ وقت تمام محتاط رهو. فرض ڪريو اسان وٽ ھڪڙو HTTP پوائنٽ آھي جيڪو سڀني استعمال ڪندڙن جا نالا ڏيکاري ٿو. صارف جي منفرد اندروني ID ڏيکارڻ جي ڪا ضرورت ناهي. ڇو؟ ڇاڪاڻ ته هڪ حملو ڪندڙ ان کي استعمال ڪري سگهي ٿو ٻين حاصل ڪرڻ لاء، صارف بابت وڌيڪ حساس معلومات. مثال طور، جيڪڏھن توھان جڪسن کي استعمال ڪريو ٿا POJO کي سيريلائيز/ڊي سيريلائيز ڪرڻ لاءِ JSON کان ، پوءِ توھان استعمال ڪري سگھو ٿا @JsonIgnore ۽ @JsonIgnoreProperties تشريحون مخصوص شعبن جي سيريلائيزيشن/ڊيسيريلائيزيشن کي روڪڻ لاءِ. عام طور تي، توهان کي مختلف هنڌن تي مختلف POJO طبقن کي استعمال ڪرڻ جي ضرورت آهي. هن جو مطلب ڇا آهي؟
  1. جڏهن ڊيٽابيس سان ڪم ڪري رهيا آهيو، هڪ قسم جو POJO استعمال ڪريو (هڪ ادارو).
  2. جڏهن ڪاروباري منطق سان ڪم ڪندي، هڪ ادارو کي ماڊل ۾ تبديل ڪريو.
  3. جڏهن ٻاهرين دنيا سان ڪم ڪري رهيا آهيو ۽ HTTP درخواستون موڪلڻ، مختلف ادارن (DTOs) استعمال ڪريو.
هن طريقي سان توهان واضح طور تي وضاحت ڪري سگهو ٿا ته ڪهڙا فيلڊ ٻاهران نظر ايندا ۽ ڪهڙا نه هوندا.

مضبوط انڪرپشن ۽ هيشنگ الگورتھم استعمال ڪريو

صارفين جي رازداري ڊيٽا کي محفوظ طور تي محفوظ ڪيو وڃي. هن کي ڪرڻ لاء، اسان کي انڪوشن استعمال ڪرڻ جي ضرورت آهي. ڪم تي مدار رکندي، توهان کي اهو فيصلو ڪرڻو پوندو ته ڪهڙي قسم جي انڪرپشن کي استعمال ڪجي. اضافي طور تي، مضبوط انڪرپشن وڌيڪ وقت وٺندو آهي، تنهنڪري توهان کي ٻيهر غور ڪرڻو پوندو ته ان جي ڪيتري ضرورت ان تي خرچ ٿيل وقت کي درست ڪري ٿي. يقينا، توهان پنهنجو پاڻ کي هڪ انڪرپشن الگورتھم لکي سگهو ٿا. پر هي غير ضروري آهي. توهان هن علائقي ۾ موجود حل استعمال ڪري سگهو ٿا. مثال طور، Google Tink :
<!-- https://mvnrepository.com/artifact/com.google.crypto.tink/tink -->
<dependency>
   <groupid>com.google.crypto.tink</groupid>
   <artifactid>tink</artifactid>
   <version>1.3.0</version>
</dependency>
اچو ته ڏسون ڇا ڪجي، هي مثال استعمال ڪندي انڪريپشن ۽ ڊيڪرپشن شامل آهن:
private static void encryptDecryptExample() {
   AeadConfig.register();
   KeysetHandle handle = KeysetHandle.generateNew(AeadKeyTemplates.AES128_CTR_HMAC_SHA256);

   String plaintext = "Elvis lives!";
   String aad = "Buddy Holly";

   Aead aead = handle.getPrimitive(Aead.class);
   byte[] encrypted = aead.encrypt(plaintext.getBytes(), aad.getBytes());
   String encryptedString = Base64.getEncoder().encodeToString(encrypted);
   System.out.println(encryptedString);

   byte[] decrypted = aead.decrypt(Base64.getDecoder().decode(encrypted), aad.getBytes());
   System.out.println(new String(decrypted));
}

پاسورڊ ڳجھو ڪرڻ

هن ڪم لاء، ان کي استعمال ڪرڻ تمام محفوظ آهي asymmetric encryption. ڇو؟ ڇو ته ايپليڪيشن کي حقيقت ۾ پاسورڊ کي ڊڪرائڻ جي ضرورت ناهي. هي معياري طريقو آهي. حقيقت ۾، جڏهن هڪ صارف پاسورڊ داخل ڪري ٿو، سسٽم ان کي انڪرپٽ ڪري ٿو ۽ ان سان مقابلو ڪري ٿو جيڪو پاسورڊ اسٽور ۾ موجود آهي. ساڳيو انڪرپشن عمل ڪيو ويندو آهي، تنهنڪري اسان اميد ڪري سگهون ٿا ته اهي ملندا، جيڪڏهن صحيح پاسورڊ داخل ڪيو ويو آهي، يقينا :) BCrypt ۽ SCrypt هتي مناسب آهن. ٻئي هڪ طرفي ڪم آهن (cryptographic hashes) computationally complex algorithms سان جيڪي گهڻو وقت وٺن ٿا. اھو اھو آھي جيڪو اسان کي گھربل آھي، ڇاڪاڻ⁠تہ سڌو حسابن کي ھميشه لاء وٺي ويندي (چڱو، ھڪڙو ڊگهو، ڊگهو وقت). اسپرنگ سيڪيورٽي الورورٿم جي پوري حد کي سپورٽ ڪري ٿي. اسان استعمال ڪري سگھون ٿا SCryptPasswordEncoder ۽ BCryptPasswordEncoder . جيڪو هن وقت سمجهي وڃي ٿو هڪ مضبوط انڪرپشن الگورٿم کي ايندڙ سال ڪمزور سمجهي سگهجي ٿو. نتيجي طور، اسان ان نتيجي تي پهتا آهيون ته اسان کي باقاعدي جانچڻ گهرجي اهي الگورتھم جيڪي اسان استعمال ڪريون ٿا ۽، ضرورت مطابق، لائبريرين کي تازه ڪاري ڪريون جن ۾ انڪرپشن الگورتھم شامل آهن.

نتيجي جي بدران

اڄ اسان سيڪيورٽي بابت ڳالهايو ۽ قدرتي طور تي، ڪيتريون ئي شيون پردي جي پويان رهجي ويون. مون صرف توهان لاءِ هڪ نئين دنيا جو دروازو کوليو آهي، هڪ اهڙي دنيا جنهن جي پنهنجي زندگي آهي. سيڪيورٽي صرف سياست وانگر آهي: جيڪڏهن توهان پاڻ کي سياست ۾ مصروف نه ڪريو، سياست توهان سان گڏ پاڻ ۾ مصروف ٿي ويندي. مان روايتي طور تي صلاح ڏيان ٿو ته توهان مون کي GitHub اڪائونٽ تي پيروي ڪريو . اتي آئون پنهنجي تخليقن کي پوسٽ ڪريان ٿو جن ۾ مختلف ٽيڪنالاجيون شامل آهن جيڪي آئون پڙهندو آهيان ۽ ڪم تي لاڳو ڪري رهيو آهيان.

مفيد لنڪس

  1. Guru99: SQL انجکشن سبق
  2. Oracle: جاوا سيڪيورٽي ريسورس سينٽر
  3. Oracle: محفوظ ڪوڊنگ ھدايتون جاوا SE لاءِ
  4. Baeldung: جاوا سيڪيورٽي جا بنيادي
  5. وچولي: 10 ٽوٽڪا توهان جي جاوا سيڪيورٽي کي طاقت ڏيڻ لاءِ
  6. Snyk: 10 جاوا سيڪيورٽي بهترين طريقا
  7. GitHub: GitHub سيڪيورٽي ليب جو اعلان: دنيا جي ڪوڊ کي محفوظ ڪرڻ، گڏ
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION