JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ سيڪيورٽي: بهترين طريقا

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

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

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

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

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

منفرد ڪمزوري. ان جي انفراديت هن حقيقت ۾ آهي ته اهو هڪ تمام مشهور ۽ سڀ کان وڌيڪ عام ڪمزورين مان هڪ آهي. جيڪڏهن توهان کي سلامتي جي مسئلي ۾ دلچسپي نه آهي، ته پوء توهان ان بابت نه ڄاڻندا. SQL انجيڪشن ڇا آهي؟ هي هڪ ڊيٽابيس تي هڪ حملو آهي اضافي SQL ڪوڊ داخل ڪندي جتي ان جي توقع نه آهي. اچو ته اسان وٽ ھڪڙو طريقو آھي جيڪو ڊيٽابيس کي پڇڻ لاء ڪجھ پيٽرولر وٺندو آھي. مثال طور، يوزر نالو. ضعيفيت سان ڪوڊ ڪجهه هن طرح نظر ايندو:
// Метод достает из базы данных всех пользователей с определенным именем
public List<User> findByFirstName(String firstName) throws SQLException {
   // Создается связь с базой данных
   Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);

   // Пишем sql request в базу данных с нашим firstName
   String query = "SELECT * FROM USERS WHERE firstName = " + firstName;

   // выполняем request
   Statement statement = connection.createStatement();
   ResultSet result = statement.executeQuery(query);

   // при помощи mapToUsers переводит ResultSet в коллекцию юзеров.
   return mapToUsers(result);
}

private List<User> mapToUsers(ResultSet resultSet) {
   //переводит в коллекцию юзеров
}
هن مثال ۾، sql سوال اڳ ۾ هڪ الڳ لائن ۾ تيار ڪيو ويو آهي. اهو لڳي ٿو ته مسئلو ڇا آهي، صحيح؟ ٿي سگهي ٿو مسئلو اهو آهي ته اهو استعمال ڪرڻ بهتر آهي String.format؟ نه؟ پوءِ ڇا؟ اچو ته پاڻ کي ٽيسٽر جي جاءِ تي رکون ۽ سوچيو ته قيمت ۾ ڇا ٿي سگھي ٿو firstName. مثال طور:
  1. توھان پاس ڪري سگھو ٿا جيڪو توقع آھي - صارف جو نالو. پوء ڊيٽابيس سڀني صارفين کي ان نالي سان واپس آڻيندو.
  2. توهان هڪ خالي اسٽرنگ پاس ڪري سگهو ٿا: پوء سڀني صارفين کي واپس ڪيو ويندو.
  3. يا توھان ھيٺ ڏنل پاس ڪري سگھو ٿا: ''''; ڊراپ ٽيبل استعمال ڪندڙ؛“. ۽ هتي به وڏا مسئلا ٿيندا. هي سوال ٽيبل کي ڊيٽابيس مان هٽائي ڇڏيندو. سڀني ڊيٽا سان. هرڪو.
ڇا توهان تصور ڪري سگهو ٿا ته اهو ڪهڙو مسئلو ٿي سگهي ٿو؟ ان کان پوء توهان جيڪي چاهيو ٿا لکي سگهو ٿا. توھان سڀني صارفين جا نالا تبديل ڪري سگھو ٿا، توھان انھن جا ايڊريس ختم ڪري سگھو ٿا. تباهيءَ جو دائرو وسيع آهي. هن کان بچڻ لاء، توهان کي هڪ تيار ڪيل سوال کي انجڻ بند ڪرڻ جي ضرورت آهي ۽ ان جي بدران ان کي پيٽرولر استعمال ڪندي ٺاهيو. ڊيٽابيس کي پڇڻ جو اهو واحد طريقو هجڻ گهرجي. هن طريقي سان توهان هن نقصان کي ختم ڪري سگهو ٿا. مثال:
// Метод достает из базы данных всех пользователей с определенным именем
public List<User> findByFirstName(String firstName) throws SQLException {
   // Создается связь с базой данных
   Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);

   // Создаем параметризированный request.
   String query = "SELECT * FROM USERS WHERE firstName = ?";

   // Создаем подготовленный стейтмент с параметризованным requestом
   PreparedStatement statement = connection.prepareStatement(query);

   // Передаем meaning параметра
   statement.setString(1, firstName);

   // выполняем request
   ResultSet result = statement.executeQuery(query);

   // при помощи mapToUsers переводим ResultSet в коллекцию юзеров.
   return mapToUsers(result);
}

private List<User> mapToUsers(ResultSet resultSet) {
   //переводим в коллекцию юзеров
}
هن طريقي سان، هن خطري کان بچي ويندي. انهن لاءِ جيڪي هن مضمون ۾ گهيرو ڪرڻ چاهيندا آهن، هتي هڪ بهترين مثال آهي . توهان کي ڪيئن خبر آهي ته توهان هن حصي کي سمجهي؟ جيڪڏھن ھيٺ ڏنل مذاق پڌرو ٿي ويو، پوء اھو ھڪڙو پڪو نشان آھي ته خطري جو جوهر واضح آھي :D جاوا ۾ سيڪيورٽي: بهترين طريقا - 2

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

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

مانيٽرنگ لاءِ Snyk استعمال ڪريو

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

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

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

Sonatype DepShield چالو ڪريو

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

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

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

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

رازداري ڪسٽمر ڊيٽا کي محفوظ طور تي محفوظ ڪيو وڃي. هن کي ڪرڻ لاءِ توهان کي انڪريشن استعمال ڪرڻ جي ضرورت آهي. ڪم تي مدار رکندي، توهان کي اهو فيصلو ڪرڻو پوندو ته ڪهڙي قسم جي انڪرپشن استعمال ڪجي. وڌيڪ، مضبوط انڪرپشن وڌيڪ وقت وٺندي آهي، تنهنڪري توهان کي ٻيهر غور ڪرڻو پوندو ته ان جي ضرورت ڪيتري وقت ان تي خرچ ٿيل وقت کي درست ڪري ٿي. يقينا، توهان پنهنجو پاڻ کي الگورتھم لکي سگهو ٿا. پر هي غير ضروري آهي. توهان هن علائقي ۾ موجود حل جو فائدو وٺي سگهو ٿا. مثال طور، 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 = "Цой жив!";
   String aad = "Юрий Клинских";

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