<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Petro Kovalchuk</title>
    <description>The latest articles on DEV Community by Petro Kovalchuk (@kovalchuk).</description>
    <link>https://dev.to/kovalchuk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F93601%2Fa38bc92d-baff-4355-a8e1-b39bcafbac70.jpg</url>
      <title>DEV Community: Petro Kovalchuk</title>
      <link>https://dev.to/kovalchuk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kovalchuk"/>
    <language>en</language>
    <item>
      <title>8 Mobile App Security Best Practices Developers Should Follow</title>
      <dc:creator>Petro Kovalchuk</dc:creator>
      <pubDate>Fri, 26 Mar 2021 12:29:43 +0000</pubDate>
      <link>https://dev.to/kovalchuk/8-mobile-app-security-best-practices-developers-should-follow-544o</link>
      <guid>https://dev.to/kovalchuk/8-mobile-app-security-best-practices-developers-should-follow-544o</guid>
      <description>&lt;p&gt;Mobile apps have become an integral part of our lives. We use them for various purposes like confidential data transfer, financial transactions, etc. This ubiquity makes them a target for intruders who can use sensitive data for their own purposes.&lt;/p&gt;

&lt;p&gt;Business mobile app security should be among the top priorities for any company. It is an important element of product development and support.&lt;/p&gt;

&lt;p&gt;Further on, I will describe several mobile app security best practices to take into account during the development process. That is surely far from a complete and comprehensive list, and you can expand it in your comments.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Encrypt the data
&lt;/h3&gt;

&lt;p&gt;Any data that a mobile app exchanges with the server, transfers to third-party services, or saves on the device must be encrypted.&lt;/p&gt;

&lt;p&gt;Insecure data storage and transmission are among the most &lt;a href="https://www.cypressdatadefense.com/blog/owasp-mobile-top-10-vulnerabilities/" rel="noopener noreferrer"&gt;common security vulnerabilities&lt;/a&gt; exploited by hackers. If the data is encrypted, intruders will still be unable to use it for their own purposes even in case they steal it.&lt;/p&gt;

&lt;p&gt;The less information remains on the device while users run an app, the better. Therefore, we recommend you store only the data an app cannot do without. Moreover, this data must be encrypted anyway.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Penetration testing
&lt;/h3&gt;

&lt;p&gt;Penetration testing includes checking for weak passwords, unencrypted data, permissions for third-party services, and various types of intentional attacks on the system that can identify its weakest points and flaws in protection against third-party intrusions.&lt;/p&gt;

&lt;p&gt;Finding backdoors in the system is a good practice, as they are a potential threat providing access to outsiders.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fryv4e57ysloi1y5dvn5q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fryv4e57ysloi1y5dvn5q.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: SecureOps&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Use Third-Party Libraries with Precaution
&lt;/h3&gt;

&lt;p&gt;Third-party libraries used by an app get the same set of permissions and restrictions as an app itself. That is why such components can use the permissions granted to the entire app to execute malicious activities. This feature creates certain risks.&lt;/p&gt;

&lt;p&gt;Third-party libraries can significantly speed up and simplify the operation process. However, you need to be careful and sift the third-party library code before using it in your app.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Use the Principle of Least Privilege
&lt;/h3&gt;

&lt;p&gt;An app should not request accessing permissions from the device to functions unnecessary for its operation. The specific list is determined by app features.&lt;/p&gt;

&lt;p&gt;The principle of least privilege dictates that code should only run with the permissions, which it absolutely needs, and nothing more.&lt;/p&gt;

&lt;p&gt;The same applies to user rights restrictions. A hacked user account with a wide range of privileges can do a lot of damage. Therefore, you should not provide users with more privileges than it is really necessary (the principle of “need to know”).&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use Multi-Factor Authentication (2FA)
&lt;/h3&gt;

&lt;p&gt;User registration and authentication system is a critical element of service security. Many apps use a 4 to 5-digit PIN for authorization, and users come up with that PIN during the registration procedure. Naturally, it is inadvisable to store this PIN as is either on the device or on the server.&lt;/p&gt;

&lt;p&gt;In contrast to a regular password login procedure, multi-factor authentication with a code sent by email or SMS greatly increases the application security level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2gssyo8pzc9q7cu0nl0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2gssyo8pzc9q7cu0nl0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Use Mobile App Fraud Prevention Systems
&lt;/h3&gt;

&lt;p&gt;For instance, when used, an app can send data on users’ geolocations to the server (provided that they have given an app access to it). If any operations are carried out in atypical locations, it is possible to suspend the service until users confirm they actually perform such operations personally.&lt;/p&gt;

&lt;p&gt;All important operations and changes to settings have to be confirmed using an SMS code. The number of tries to enter the code should also be limited.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Obfuscate to Prevent Reverse Engineering
&lt;/h3&gt;

&lt;p&gt;Code obfuscation is an &lt;a href="https://lvivity.com/mobile-app-security-best-practices" rel="noopener noreferrer"&gt;app security technique&lt;/a&gt;, the essence of which is to convert software code into a format difficult for humans to understand. This approach includes encrypting code (partially or completely), renaming classes and variables, and removing metadata able to reveal sensitive data about used libraries or APIs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forerijtkk06qshpuuepz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forerijtkk06qshpuuepz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In general, “cleaning up” the code before submitting it to production is the best practice. Users do not need comments explaining how a particular function or piece of code works. However, such comments are a great help for intruders when they analyze the product.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Test Repeatedly
&lt;/h3&gt;

&lt;p&gt;Mobile app security measures are not limited to the release. It is an ongoing process. New threats are constantly emerging, and new solutions are required to respond to them. Regular app updates and security testing for vulnerabilities help to fix flaws in the code and reduce the probability of data breaches.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://lvivity.com/what-is-code-review-process" rel="noopener noreferrer"&gt;code review process&lt;/a&gt; and app security level independent analysis are equally important. To carry out these tasks, you can create your own security testing team or resort to services provided by a third-party company.&lt;/p&gt;

&lt;h3&gt;
  
  
  Takeaways
&lt;/h3&gt;

&lt;p&gt;To ensure mobile app security, it is necessary to identify the most dangerous vulnerabilities, take them into account at the development and testing stages, and if identified, eliminate and document the issues found to avoid them in the future.&lt;/p&gt;

&lt;p&gt;On the other hand, a 100% security level can never be guaranteed. The possibility of an attack will always exist, but the measures described in this article reduce the risks or make it harder for intruders to succeed in their malicious intentions.&lt;/p&gt;

&lt;p&gt;Best protected applications are those developed using the security by design approach when security is taken into account on the initial stages of the development process and on.&lt;/p&gt;

</description>
      <category>mobiledevelopment</category>
      <category>bestpractices</category>
      <category>beginners</category>
      <category>security</category>
    </item>
    <item>
      <title>Junior, Middle and Senior: How to Effectively Build a Team of Different Level Specialists</title>
      <dc:creator>Petro Kovalchuk</dc:creator>
      <pubDate>Tue, 20 Nov 2018 15:37:24 +0000</pubDate>
      <link>https://dev.to/lvivity/junior-middle-and-senior-how-to-effectively-build-a-team-of-different-level-specialists-14o</link>
      <guid>https://dev.to/lvivity/junior-middle-and-senior-how-to-effectively-build-a-team-of-different-level-specialists-14o</guid>
      <description>&lt;p&gt;The success of any project in many ways depends on the team. Even a small product is mostly designed by a team, even if that team consists of just two people. Building an effective team is very important and, at first glance, this looks like a much simpler task than it really is.&lt;/p&gt;

&lt;p&gt;Each member of the team has his own opinion and vision about the project, its development, evolution and other processes. It is necessary to organize everything in such a way that all these factors will be in harmony with each other, and specialists’ joint efforts will be focused on achieving the customer’s specific business objectives. Therefore, this must be taken into account when starting a project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is the right team configuration important?
&lt;/h3&gt;

&lt;p&gt;The importance of the structuring the team correctly is obvious. First of all, it affects the final budget. The cost of each developer depends on his level of knowledge and experience.&lt;/p&gt;

&lt;p&gt;It is important to save the optimal cost of the project, so you have to build the team and recruit people for different levels of tasks on the project taking, into account their duration and workload.&lt;/p&gt;

&lt;p&gt;It is important to note that there is such a thing as a human factor. If a ten-person project will have ten architects or senior-level developers, the probability of conflict occurring increases because the developers will probably all want to express their own vision, which cannot always be called constructive.&lt;/p&gt;

&lt;p&gt;The work effectiveness is one of the key priorities in software development; thus, in order to solve each type of task you need to pick the right person. Someone can handle routine tasks perfectly well and spend hours dealing with the algorithm, and someone else likes to do everything dynamically and see progress right away.&lt;/p&gt;

&lt;p&gt;Understanding and considering these things, you will be able to recruit the right people to the right place. As a result, efficiency will be at the maximum level.&lt;/p&gt;

&lt;p&gt;It is important to consider that not every developer is a good team player, so there should be a person who manages the team – a team lead. He not only has to control the project’s development and team’s progress, but also smooth out conflicts, raise the motivation of the developers, and take on the pressure from the customer.&lt;/p&gt;

&lt;p&gt;Actually, the control of the project should be the responsibility of the team lead, the project manager and tech lead. These are the key people who should be at the heart of building the team. In fact, they are the skeleton staff who manage the project from start to finish.&lt;/p&gt;

&lt;p&gt;As for juniors, although they often lack experience, these developers sometimes play an important role in projects with a large number of routine and simple tasks. Junior developers spend about the same amount of time solving issues as middle or senior ones. This raises the question: “Why does the customer have to pay more?”&lt;/p&gt;

&lt;p&gt;Team formats: recommendations, tested in practice&lt;br&gt;
Single developer. Let’s start with the smallest. In fact, the team is not only developers, but everyone involved in the project. This can include the customer, product owner, tester, intermediary and so on. This type of team is typical for small projects or MVP development for the startup.&lt;/p&gt;

&lt;p&gt;2-10 people. This is the most common team configuration for small and medium-sized projects. To build such a team is relatively easy, since you can recruit the right developers who can work productively together, are close in mentality, mood, style of work and communication.&lt;/p&gt;

&lt;p&gt;These teams are easy to manage, show high performance and have minimum conflicts. You can clearly see all the risks and disadvantages. Commonly, these teams include the team lead, tech lead, project manager, and some developers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XHG586Yz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lvivity.com/wp-content/uploads/2018/08/dev-types.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XHG586Yz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lvivity.com/wp-content/uploads/2018/08/dev-types.jpg" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The best way to build a team is to start with the skeleton staff and then proceed depending on the tasks of the project. It makes no sense delegating simple tasks to the senior developer, so it is advisable to hire a middle developer, which will make it possible to save on the budget without losing quality.&lt;/p&gt;

&lt;p&gt;It is important for the team lead and tech lead to get on with the developers and have a shared vision of the processes. Sometimes it’s worth recruiting a junior developer to do the routine work, such as duplicating functionality, working on templates, and helping senior developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Senior and Junior
&lt;/h3&gt;

&lt;p&gt;The number of testers depends on the size of the project and the volume of progress that must be tested, so there is no universal formula here.&lt;/p&gt;

&lt;p&gt;10-50 people. In such teams there should be well established processes, since managing a large number of people is quite difficult. For that, you need to have an experienced project manager and team lead, as well as senior developers with good technical backgrounds.&lt;/p&gt;

&lt;p&gt;From my experience, when managing a team of 30 people it’s best to break it into junior, middle and senior clusters, for example: 4 juniors, 5 middles, 7 seniors, project manager, team lead, tech lead and testers. These proportions are the most effective for most projects.&lt;/p&gt;

&lt;p&gt;There is another possible type of team configuration: freelancers and random developers. This can cause the most problems in projects, since the people have never worked together and each have their own style of work, different working hours, etc. And they are often not eager to compromise.&lt;/p&gt;

&lt;p&gt;As a result, all the listed factors create a direct risk to the project, despite the high level of developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resume
&lt;/h3&gt;

&lt;p&gt;From my own experience working on various projects, I can say that the best choice is a team that has worked together for a while and works from one office. This is a guarantee of success and stability on a project.&lt;/p&gt;

&lt;p&gt;Team formation is an important and difficult task. If you trust this to the professionals, the risks for the project will be minimal, and the probability of its successful completion becomes almost 100%.&lt;/p&gt;

&lt;p&gt;The post appeared first on &lt;a href="https://lvivity.com/"&gt;Software Development Company Lvivity&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>team</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
