|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/angular-security/
课程评论:没有评论
课程名称:Angular安全大师班(附免费电子书) 课程概述:本课程是一个关于网络应用安全基础的课程,使用Angular/Node技术栈构建应用程序。所有服务器代码均采用Typescript编写,但课程中阐述的安全概念同样适用于其他技术栈。课程还包括一本辅助电子书《Typescript Jumpstart》。我们将使用来自Auth0的多个MIT许可的Angular和Node包,并演示如何使用Auth0进行应用用户管理。需要明确的是,这不是专门针对Auth0的课程,Auth0仅作为部分开源包的来源,并演示如何利用JWT简化将认证委派给第三方系统的过程,可能是内部分开发或外部服务。 课程内容强调:安全是软件开发职业生涯中必备的关键技能,掌握安全知识是软件开发人员向更高级别职位(如应用架构师)发展的基础之一。虽然安全知识难以掌握,但一旦掌握,其实用性远超大多数软件开发知识。课程将逐步封装一个没有安全的运行应用,通过实现用户注册和登录功能,渐进式加强应用安全。我们將採用簡單的丟包攻擊來体验实际漏洞,并学习身份验证和授权的基础知识,以及常见的安全漏洞(如字典攻击、CSRF等)及其修复方法。 课程安排:我们将从用户管理和注册功能的实现开始,学习在数据库中存储密码和引入密码学哈希。接着,实施状态登录,逐步升级到基于JWT的解决方案。虽涉及Auth0部分,但主旨在于展示如何在企业级应用中将认证委派给集中式服务。我们还将学习如何实现Angular中的基于角色的UI功能,并讨论服务器端授权,最终构建安全性良好的应用。 课程收获:完成课程后,你将具备坚实的网络应用安全基础,能够有效地防御和识别安全攻击,理解Angular所提供的安全机制及其局限性。你将熟悉多种安全漏洞及其解决方法,能够在自己的开发项目中实施基于UID的授权和后台管理功能,从而提升职业发展潜力。对于互联网业务拥有者或即将启动自己平台的人来说,本课程提供了确保在线平台安全所需的实用知识。通过该课程,你将能评估第三方安全解决方案,并拆解安全审计报告中的应用级漏洞问题,提升你的开发和安全管理能力。
The course is an Web Application Security Fundamentals Course, where the application will use the Angular/Node stack.All the server code is in Typescript, but the security concepts explained in it are applicable to other technology stacks.This course includes an auxiliary Ebook - The Typescript Jumpstart EbookWe will use several MIT licensed Angular and Node packages from Auth0 (that you could use in your application), and we will also include a demo of how to use Auth0 for doing Application User Management.Its important to realize that this is NOT an Auth0 specific course. Auth0 will be the source of a couple of open source packages we will use, and will be doing a quick demo of it to show how JWT makes it simple to delegate authentication to a third-party system, which could be developed in-house as well.Security - A Fundamental Step in a Software Development CareerSecurity is probably the number one advanced topic that Software Developers are expected to master when going forward in their software development careers.Security knowledge is hard to come by but its essential for advancing to more senior software development positions, like for example Application Architect or similar.Learning Web Security Fundamentals, knowing how to design an application for security, and knowing how to recognize and fix security issues is an essential skill for a senior developer.But the problem is that security knowledge is orthogonal to most other topics and it typically takes years to learn.The good news is that once you have it, Security knowledge has a much longer shelf live than most software development knowledge in general.Most of the vulnerabilities and fixes that you will learn in this course were useful 10 years ago, and will (very likely) still be useful 10 years from now - Angular and Node are just an example of one stack, to make the course examples more practical.Security is seen as something really hard to master - this is actually not the case! Application Security is much more approachable than you might think, depending on how you learn it.What Is The Best Way To Learn Security in a Fun and Practical Way?Here is what we will do: we are going to take the skeleton of a running application that has no security yet, and we are going to secure the application step-by-step.Using a couple of MIT packages from Auth0 (that you would be able to use in any project), we are going to implement the Sign-Up and Login functionality from scratch, and because security cannot be enforced only at the client-side, we will implement both the frontend in Angular and the backend in Node.As we secure the application, and we are going to periodically attack the application many times during the course, to prove that the vulnerabilities are real!!By doing so, we will learn along the way the fundamentals of Authentication and Authorization, we will become familiar with common vulnerabilities like Dictionary Attacks, CSRF and others, and we will get familiar with commonly used cryptographic tools like Hashing, Salting, JWT, password storage recommendations and more.Please don't be intimidated by these concepts: The focus in this course will not be on the internals of each of the cryptographic tools that we will use, but instead on understanding on a high-level what problems do these tools solve, when to use each and why.We will also learn how to design our application for security, and we will learn how in many situations application design is ou best defense.Course OverviewWe will start at the beginning: we will see the proper way of doing User Management and Sign Up: we will learn how to store passwords in a database, and we will introduce cryptographic hashes in an approachable way.Once we have the Sign-Up functionality in place, we will implement Login and understand the need for a temporary identity token. Our first implementation will be stateful login, where the token is kept at the server level.And at this point we could think we have authentication in place, but we decide to prepare our application for scalability, so we decide to try a JWT (JSON Web Tokens) based approach, because we know that this is what services like Firebase and Auth0 use.We will use a couple of Auth0 packages to quickly refactor our Login to be JWT based, and learn the advantages of using JWT, and some potential disadvantages as well.We will then see how its also possible to do Authentication using a third-party JWT-based service like Auth0, effectively removing all authentication logic from both our codebase and our database, and delegating it to a third-party service.Note that this Auth0-specific part is only a small part of the course, and its main goal is to show how its possible at an enterprise level to delegate authentication to a centralized service, whithout having to introduce direct communication between applications and the centralized authentication service.This means that if you can't use Auth0 at your company, you can apply the same design principles and design a JWT-solution that delegates authentication to a centralized server behind the firewall.We will then cover how to do UI-level role-based functionality in Angular using the Angular Router, and a custom directive for showing or hiding certain parts of the UI depending on the role of the user. We will learn why the Router cannot enforce actual security.We will also talk about server-side Authorization, and we will implement a commonly needed security-related Admin Level functionality: The Login As User service, that allows an admin to login as any user, to investigate a problem report. We can see why we would need to secure this functionality!At the end of all these vulnerabilities and security fixes, we will have a well secured application and we will have learned a ton of security-related concepts along the way in a fun and practical way!What Will you Learn In this Course?With this course, you will have a rock-solid foundation on Web Application Security Fundamentals, and you will have gained the practical experience of applying those concepts by defending an application from a series of security attacks. You will have done so by actually performing many of the attacks!You will have learned these concepts in the context of an Angular/Node application, but these concepts are applicable to any other technology stack.You will learn what built-in mechanisms does Angular provide to defend against security problems, and what vulnerabilities it does NOT defend against and why.You will be familiar with best practices for password storage, custom authentication service design and implementation, you will know the essentials about cryptographic hashes, be familiar with JWT and several commonly used open source Auth0 packages.You will be familiar with the following security vulnerabilities: Dictionary attacks, identity token highjacking techniques, the browser same-origin policy, how to combine cookies with JWTs and why, Cross-Site Request Forgery or CSRF, common design vulnerabilities, and more.You will know common practical solutions for securing both enterprise and public internet applications, such as how to use JWT to delegate authentication to a centralized service, which could be Auth0 or a in-house developed service that follows similar principles.You will know how to implement UI-level authorization and use client-side constructs like Router guards to implement it and even build your own authorization-related UI directives.You will also learn about server side authorization, and how to implement a commonly needed backend service that is only accessible to Admins - Login As User.What Will You Be Able to do at the End Of This Course?This course could help you take your development career to a more senior level, where the knowledge about web application security is essential and a key differentiating factor.If you are a private internet business owner or thinking of launching your own platform, this course will contain most of what you need in practice to secure your own online platform in a robust and effective way.With this course, you will have the knowledge necessary for evaluating many third-party security-related solutions, and you will know where to look for vulnerabilities in your application.You will be able to understand most application-level vulnerability reports that come out of security audits done by third party companies, and you will be able to understand and fix the most commonly reported problems.