<?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: Akhileswar Mannuru (He/Him)</title>
    <description>The latest articles on DEV Community by Akhileswar Mannuru (He/Him) (@akkimann).</description>
    <link>https://dev.to/akkimann</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%2F107481%2F2db6f69c-95d7-4573-a0dc-c6a6f3ea9cf1.jpeg</url>
      <title>DEV Community: Akhileswar Mannuru (He/Him)</title>
      <link>https://dev.to/akkimann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akkimann"/>
    <language>en</language>
    <item>
      <title>WatchYaari - Watch videos together with your friends</title>
      <dc:creator>Akhileswar Mannuru (He/Him)</dc:creator>
      <pubDate>Sun, 28 Aug 2022 18:41:00 +0000</pubDate>
      <link>https://dev.to/akkimann/watchyaari-watch-videos-together-with-your-friends-4mbo</link>
      <guid>https://dev.to/akkimann/watchyaari-watch-videos-together-with-your-friends-4mbo</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;WatchYaari is a platform where friends can watch youtube videos together while connected over a video chat. It is primarily built using MEAN stack, WebRTC, socket.io &amp;amp; Redis.&lt;/p&gt;

&lt;p&gt;The idea for the same originated back in April 2020 when people were socially distant due to COVID-19 outbreak &amp;amp; while talking to bunch of friends over a video call, the need for hanging out with friends during social distancing was the bootstrap point of WatchYaari.&lt;br&gt;
Initially we had started off with youtube but the plan was to extend integrating with various OTT platforms.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;MEAN/MERN Mavericks&lt;br&gt;
I have used Redis in the following 2 ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As a primary database instead of MongoDB (i.e. replace “M” in MEAN/MERN with “R” for Redis).&lt;/li&gt;
&lt;li&gt;Added caching and advanced searching capabilities using JSON and Search modules.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  [Video Explainer of My Project]
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/h9V-9zfZmUc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Language Used
&lt;/h3&gt;

&lt;p&gt;JS/TS/Node.js&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AkhilJSON"&gt;
        AkhilJSON
      &lt;/a&gt; / &lt;a href="https://github.com/AkhilJSON/watchyaari"&gt;
        watchyaari
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
WatchYaari - Watch videos together with your friends&lt;/h1&gt;
&lt;p&gt;Platform where users can watch youtube videos while on a video chat. Basically a digital party where users can enjoy watching videos together
Separated by distance, brought together by WatchYaari.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186484922-de0fcb3c-6f29-4b10-9417-8068ad4d4805.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-24 at 9 53 28 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--kI9Embn0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186484922-de0fcb3c-6f29-4b10-9417-8068ad4d4805.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186473611-184617fe-01d8-48cf-b6f2-6c9b2a83ec17.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-24 at 10 00 39 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--iryYEA4v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186473611-184617fe-01d8-48cf-b6f2-6c9b2a83ec17.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186485907-9caf871b-40ad-4f19-9642-13545d0bb428.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-24 at 10 01 06 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--9avIpU45--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186485907-9caf871b-40ad-4f19-9642-13545d0bb428.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186484722-109020aa-fc22-4e4a-8f6e-f0a127599907.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-24 at 10 00 23 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--xuyJadNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186484722-109020aa-fc22-4e4a-8f6e-f0a127599907.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186484785-19041544-ca3d-473c-8126-89da5f1f96c7.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-24 at 10 00 51 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--rsES2eR8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186484785-19041544-ca3d-473c-8126-89da5f1f96c7.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186486192-0e5bcbce-7c6b-45f9-b115-c02cd0559b80.png"&gt;&lt;img width="1315" alt="Screenshot 2022-08-24 at 9 52 19 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--HtJ_pHVg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186486192-0e5bcbce-7c6b-45f9-b115-c02cd0559b80.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/186486403-ed2edb93-5e0e-48a5-bd37-8d8a7815e12e.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-24 at 10 01 28 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--nuxozJ3X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186486403-ed2edb93-5e0e-48a5-bd37-8d8a7815e12e.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/187056564-db66a18e-4010-416a-a989-34838c8f337f.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-28 at 9 22 02 AM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--S54gIdum--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187056564-db66a18e-4010-416a-a989-34838c8f337f.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Overview video (Optional)&lt;/h1&gt;
&lt;p&gt;Here's a short video that explains the project and how it uses Redis:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=h9V-9zfZmUc" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jhgp88kf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186484887-8f5361ba-e309-49bb-af05-f82a28a977e6.png" alt="Embed your YouTube video"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
How it works&lt;/h2&gt;
&lt;h3&gt;
How the data is stored:&lt;/h3&gt;
&lt;p&gt;Used RedisJSON for saving JSON data in Redis with the help of redis-om nodejs library.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/187070194-aa559fca-2b5a-4f0f-9b17-f938fab5905c.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-28 at 4 18 35 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--UXaSfJa2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187070194-aa559fca-2b5a-4f0f-9b17-f938fab5905c.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/187070287-4ec7631a-b45f-4458-97fb-83b4fd8b82b0.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-28 at 4 20 22 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--LDtW5K4b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187070287-4ec7631a-b45f-4458-97fb-83b4fd8b82b0.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
How the data is accessed:&lt;/h3&gt;
&lt;p&gt;Used RedisSearch to query data stored in Redis with the help of redis-om nodejs library.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/187070624-7c080a65-ef2d-4037-9b12-5c3677d0dcce.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-28 at 4 27 31 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--bXWBLeX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187070624-7c080a65-ef2d-4037-9b12-5c3677d0dcce.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/26838762/187070556-68fcb458-ebc4-4675-93bd-4d628296a4b8.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-28 at 4 24 48 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nox-MfAD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187070556-68fcb458-ebc4-4675-93bd-4d628296a4b8.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Keys changes while moving from MongoDB to Redis as primary database&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Changed MongoDB ObjectId dependecies to RedisJSON entityId&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Changed Mongoose models to RedisJSON schema&lt;/p&gt;
&lt;p&gt;Mongoose Model
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26838762/187040521-d42cf882-d0fb-4729-a00b-96736bb69600.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-27 at 10 33 17 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--jXno-0Ry--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187040521-d42cf882-d0fb-4729-a00b-96736bb69600.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RedisJSON Schema
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26838762/187040537-949b1428-c926-4934-9cc7-e71038298b30.png"&gt;&lt;img width="1440" alt="Screenshot 2022-08-27 at 10 32 48 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--6kHsN3rM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187040537-949b1428-c926-4934-9cc7-e71038298b30.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Changed queries&lt;/p&gt;
&lt;p&gt;Mongoose aggregate query&lt;br&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26838762/187040727-acaf900d-f177-45db-bec2-405e54346522.png"&gt;&lt;img width="710" alt="Screenshot 2022-08-27 at 10 39 26 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--HUjKPcli--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187040727-acaf900d-f177-45db-bec2-405e54346522.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RedisSearch query&lt;br&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26838762/187040751-ba176261-be22-4490-848e-64d4662895d5.png"&gt;&lt;img width="660" alt="Screenshot 2022-08-27 at 10 40 16 PM" src="https://res.cloudinary.com/practicaldev/image/fetch/s--4CWrfaY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/187040751-ba176261-be22-4490-848e-64d4662895d5.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Architecture diagram&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26838762/186468420-7d427406-71a4-4df9-a8db-624701e62a3f.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3icFf0tF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/26838762/186468420-7d427406-71a4-4df9-a8db-624701e62a3f.png" alt="WatchYaariBeforeAfterRedisHacathon drawio"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
How to run it locally?&lt;/h2&gt;
&lt;h3&gt;
Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Node - v14.16.0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Angular: 9.1.9&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Angular CLI: 9.1.4&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NPM -…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AkhilJSON/watchyaari"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Check out &lt;a href="https://redis.io/docs/stack/get-started/clients/#high-level-client-libraries"&gt;Redis OM&lt;/a&gt;, client libraries for working with Redis as a multi-model database.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Use &lt;a href="https://redis.info/redisinsight"&gt;RedisInsight&lt;/a&gt; to visualize your data in Redis.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sign up for a &lt;a href="https://redis.info/try-free-dev-to"&gt;free Redis database&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>redishackathon</category>
    </item>
    <item>
      <title>Finding security vulnerabilities in JavaScript with Github's CodeQL &amp; Code Scanning</title>
      <dc:creator>Akhileswar Mannuru (He/Him)</dc:creator>
      <pubDate>Thu, 14 Jul 2022 08:00:57 +0000</pubDate>
      <link>https://dev.to/akkimann/finding-security-vulnerabilities-in-javascript-with-githubs-codeql-code-scanning-2h1k</link>
      <guid>https://dev.to/akkimann/finding-security-vulnerabilities-in-javascript-with-githubs-codeql-code-scanning-2h1k</guid>
      <description>&lt;p&gt;Identifying code vulnerability is always a growing concern for a software engineer. How to reduce the security vulnerabilities in a growing code base?  To mitigate such problems, I started exploring and got introduced to Github’s CodeQL.&lt;/p&gt;

&lt;p&gt;Read &lt;a href="https://resources.github.com/downloads/GitHubAdvanced%20SecurityEbook.pdf" rel="noopener noreferrer"&gt;this document&lt;/a&gt; by Github to learn more about application security. It covers various aspects like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;State of application security today.&lt;/li&gt;
&lt;li&gt;Traditional vs. end-to-end security.&lt;/li&gt;
&lt;li&gt;Developer first application security
with GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Through this blog, I will give a step-by-step understanding on how to find security vulnerabilities in JavaScript project using CodeQL. I am planning to cover the following in detail. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Intro to CodeQL &amp;amp; Code Scanning.&lt;/li&gt;
&lt;li&gt;How to find security vulnerabilities in JavaScript with CodeQL?&lt;/li&gt;
&lt;li&gt;How to enable Github Code scanning with CodeQL?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Intro to CodeQL &amp;amp; Code Scanning
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CodeQL&lt;/strong&gt; is an industry-leading semantic code analysis engine developed by Github designed to identify vulnerabilities in codebase. It treats your code as data by building a database that can be queried for vulnerabilities. You can write queries on data to find patterns, vulnerabilities &amp;amp; bugs.  For more details, &lt;a href="https://codeql.github.com/docs/codeql-overview/about-codeql/" rel="noopener noreferrer"&gt;click here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CodeQL can be used in conjunction with Code scanning capabilities which is GitHub’s native SAST (&lt;a href="https://www.synopsys.com/glossary/what-is-sast.html" rel="noopener noreferrer"&gt;Static Application Security Testing&lt;/a&gt;) tool, a developer-first approach to SAST that enables vulnerabilities to be found and remediated effortlessly before they reach production.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How to find security vulnerabilities in JavaScript with CodeQL?
&lt;/h2&gt;

&lt;p&gt;There is a wonderful workshop video on Finding security vulnerabilities in JavaScript with CodeQL.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;u&gt;Note:&lt;/u&gt; If you are in a hurry &amp;amp; just want to enable CodeQL scanner in your javascript codebase without any need of learning CodeQL or willing to explore/learn writing queries using it or if you want to learn it later, please skip this section, this video will take at least 1.5hrs to complete.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;u&gt;Workshop Video&lt;/u&gt;&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pYzfGaLTqC0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Video Summary&lt;/u&gt;&lt;br&gt;
&lt;u&gt;This workshop video gives a walkthrough on :&lt;/u&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to install CodeQL Vs code extension?&lt;/li&gt;
&lt;li&gt;How to download a pre-generated bootstrap database by CodeQl CLI?&lt;/li&gt;
&lt;li&gt;How to write queries to identify JQuery Plugin vulnerabilities which are found in a specific version of bootstrap(v3.4.0)?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;Helpful links&lt;/u&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codeql.github.com/docs/codeql-for-visual-studio-code/" rel="noopener noreferrer"&gt;CodeQL for Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/githubsatelliteworkshops/codeql/blob/master/javascript.md" rel="noopener noreferrer"&gt;javascript.md&lt;/a&gt; used in the workshop video.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/githubuniverseworkshops/codeql" rel="noopener noreferrer"&gt;Github workshop repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. How to enable Github Code scanning with CodeQL?
&lt;/h2&gt;

&lt;p&gt;After following the workshop video you should be able to use CodeQL.&lt;/p&gt;

&lt;p&gt;Rather than writing queries manually, code scanning feature will find security vulnerabilities and errors in the code for your project on GitHub. In this section i'll help you setting it up. For this purpose we will use the same javascript open source library which is used in the above workshop video &lt;a href="https://github.com/twbs/bootstrap" rel="noopener noreferrer"&gt;twbs/bootstrap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Code scanning is GitHub’s native SAST tool. More about it can be &lt;a href="https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning" rel="noopener noreferrer"&gt;found here&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Alternatively you can try out Code scanning JavaScript Tutorial &lt;a href="https://github.com/github/code-scanning-javascript-demo" rel="noopener noreferrer"&gt;by following this&lt;/a&gt;. Rather if you would like to continue with bootstrap plugin vulnerability example please follow the below steps:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3.1.&lt;/strong&gt; &lt;strong&gt;Fork&lt;/strong&gt; the &lt;a href="https://github.com/twbs/bootstrap" rel="noopener noreferrer"&gt;twbs/bootstrap&lt;/a&gt; public repository in to your github account. &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%2Fmdgab597u9ku320jgkbp.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%2Fmdgab597u9ku320jgkbp.png" alt="Forking the twbs/bootstrap project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.2.&lt;/strong&gt; Create a new branch(&lt;strong&gt;code-scan-v3.4.0&lt;/strong&gt;) from v3.4.0 tag, since the database used in the workshop video is generated from the same version of bootstrap, we will get similar vulnerabilities as the workshop video.&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%2F4ku4qf7nq9h5lv9n8rrp.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%2F4ku4qf7nq9h5lv9n8rrp.png" alt="Searching v3.4.0 tag"&gt;&lt;/a&gt;&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%2F90q1bqqnwh6gy0b3pdeq.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%2F90q1bqqnwh6gy0b3pdeq.png" alt="Creating code-scan-v3.4.0 branch"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.3.&lt;/strong&gt; &lt;strong&gt;Enable Code Scanning&lt;/strong&gt; : Since Code Scanning is available for all public repositories I have enabled it with the &lt;a href="https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning" rel="noopener noreferrer"&gt;help of this&lt;/a&gt;.&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%2Fz06f9tgjexqms4gavrqt.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%2Fz06f9tgjexqms4gavrqt.png" alt="Enabling Github Code scanning"&gt;&lt;/a&gt;&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%2F56uqxt1187qug0n7x3cc.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%2F56uqxt1187qug0n7x3cc.png" alt="Enabling Github Code scanning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.4.&lt;/strong&gt; &lt;strong&gt;Actions Workflow file&lt;/strong&gt; : Update the branch name(&lt;strong&gt;code-scan-v3.4.0&lt;/strong&gt;) in the CodeQL action Workflow file which we have enabled in the previous step. So that the action is triggered only on this branch(&lt;strong&gt;code-scan-v3.4.0&lt;/strong&gt;) push &amp;amp; PR events.&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%2F1rkt9isyokjpzb6lxgyh.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%2F1rkt9isyokjpzb6lxgyh.png" alt="Editing CodeQL Actions workflow file"&gt;&lt;/a&gt;&lt;br&gt;
 I have removed the cron schedule to avoid running it on periodic basis, Based on your requirements you can add specific workflow trigger events. Check this &lt;a href="https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows" rel="noopener noreferrer"&gt;for more info&lt;/a&gt; on Github Actions event triggers for the workflows.&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%2F1vlxs9l5srbdo7k1yxi3.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%2F1vlxs9l5srbdo7k1yxi3.png" alt="Changing branch name and removing schedule event trigger in the CodeQL workflow file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.5.&lt;/strong&gt; copy the &lt;strong&gt;.github&lt;/strong&gt; folder from the main branch to the new branch(&lt;strong&gt;code-scan-v3.4.0&lt;/strong&gt;), since it is missing in it. I have copied the folder &amp;amp; committed to the &lt;strong&gt;code-scan-v3.4.0&lt;/strong&gt; branch. Since we have mentioned the workflow to be triggered on push &amp;amp; PR in the previous step, this push will also trigger the Code scanning.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make sure you have the CodeQL workflow changes in this branch, which we have added in the previous step.&lt;/p&gt;
&lt;/blockquote&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%2Fr10m4hza6a028kgrdlwv.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%2Fr10m4hza6a028kgrdlwv.png" alt="Pushing .github folder to code-scan-v3.4.0 branch"&gt;&lt;/a&gt;&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%2Fs1u4tgddo59hpqt7xcs3.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%2Fs1u4tgddo59hpqt7xcs3.png" alt="Code scanning workflow progress after code push"&gt;&lt;/a&gt;&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%2Ffco1xlf5md613kxrm7hm.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%2Ffco1xlf5md613kxrm7hm.png" alt="Code scanning workflow progress after code push"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.6.&lt;/strong&gt; After the scanning is complete, you can find the alerts here:&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%2Fn7an9s1tuxts1cnqt3xf.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%2Fn7an9s1tuxts1cnqt3xf.png" alt="Alerts page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Change the branch name in the filters to see the alerts belongs to &lt;strong&gt;code-scan-v3.4.0&lt;/strong&gt; branch.&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%2F9yzq8vqqeusidmjm1wkt.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%2F9yzq8vqqeusidmjm1wkt.png" alt="Alerts page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now see the Unsafe jQuery plugin alerts which are similar to the workshop video.&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%2Fq9olbble7g47x87qkmmp.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%2Fq9olbble7g47x87qkmmp.png" alt="Alerts page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To trigger the workflow again either you can Re-run the old job or push a new commit in the branch. For Re-running click on Re-run all jobs in the CodeQL workflow summary page:&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%2F8dcgo1mv296fbjao3sh8.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%2F8dcgo1mv296fbjao3sh8.png" alt="Re-running workflows"&gt;&lt;/a&gt;&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%2F237di3sr78p5gx1bmx8y.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%2F237di3sr78p5gx1bmx8y.png" alt="Re-running workflows"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above Code scanning was done using Github actions using the free minutes available in the public repository quota. &lt;br&gt;
 Code scanning is also available in private repositories owned by organizations that use GitHub Enterprise Cloud and have a license for GitHub Advanced Security. For more information, please &lt;a href="https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security" rel="noopener noreferrer"&gt;read this&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions" rel="noopener noreferrer"&gt;Read this&lt;/a&gt; to know more about Actions billing.&lt;/p&gt;

&lt;p&gt;Additionally you can also run the code scanning using an external CI system, &lt;a href="https://docs.github.com/en/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/about-codeql-code-scanning-in-your-ci-system" rel="noopener noreferrer"&gt;read this&lt;/a&gt; for setting up custom runner of CodeQL.&lt;/p&gt;

&lt;p&gt;Please read this GitHub CodeQL Terms and Conditions before using it, use enterprise license for purposes beyond this &lt;a href="https://github.com/github/codeql-cli-binaries/blob/main/LICENSE.md#use-rights-scope-of-license" rel="noopener noreferrer"&gt;&lt;strong&gt;scope&lt;/strong&gt;&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/github/codeql-cli-binaries/blob/main/LICENSE.md#license-restrictions" rel="noopener noreferrer"&gt;&lt;strong&gt;restrictions&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also &lt;a href="https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/recommended-hardware-resources-for-running-codeql" rel="noopener noreferrer"&gt;Read this&lt;/a&gt; to know about the hardware resources requirements for running CodeQL.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FYI, There are other scanners available in the Github &lt;br&gt;
marketplace in addition to the &lt;a href="https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning-with-codeql" rel="noopener noreferrer"&gt;CodeQL Scanner&lt;/a&gt;. &lt;br&gt;
Check the below image to add other workflows&lt;/p&gt;
&lt;/blockquote&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%2Fs7wyxik5nbnx2zzvrpuk.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%2Fs7wyxik5nbnx2zzvrpuk.png" alt="Github workflow marketplace"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope this helps!&lt;/p&gt;

</description>
      <category>codeql</category>
      <category>github</category>
      <category>javascript</category>
      <category>sast</category>
    </item>
  </channel>
</rss>
