{"id":2021,"date":"2024-11-03T12:41:16","date_gmt":"2024-11-03T10:41:16","guid":{"rendered":"https:\/\/epicmarketing.co.il\/notebook\/?p=2021"},"modified":"2024-11-03T12:42:43","modified_gmt":"2024-11-03T10:42:43","slug":"security-best-practices","status":"publish","type":"post","link":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/","title":{"rendered":"Security Best Practices"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Learning Objectives:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Understand the importance of <strong>input validation<\/strong> and learn how to validate user inputs to prevent attacks such as SQL Injection.<\/li>\n\n\n\n<li>Learn how to use <strong>ASP.NET Core Data Protection<\/strong> to securely store and protect sensitive data.<\/li>\n\n\n\n<li>Understand <strong>CORS (Cross-Origin Resource Sharing)<\/strong> and how to configure it to allow your Angular front end to communicate securely with your ASP.NET Core backend.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Input Validation and Data Protection<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What is Input Validation?<\/strong> <strong>Input validation<\/strong> ensures that user inputs are clean, safe, and valid before processing them. This is crucial to prevent security vulnerabilities like <strong>SQL Injection<\/strong> or <strong>Cross-Site Scripting (XSS)<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How to Implement Input Validation in ASP.NET Core<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>Data Annotations<\/strong> in model classes to enforce validation rules, such as <code>[Required]<\/code> or <code>[StringLength]<\/code>.<\/li>\n\n\n\n<li>Use <strong>FluentValidation<\/strong> or custom validation logic for complex scenarios.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Example: Validating User Input<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class UserRegistration\n{\n    &#x5B;Required(ErrorMessage = &quot;Username is required&quot;)]\n    &#x5B;StringLength(20, MinimumLength = 5, ErrorMessage = &quot;Username must be between 5 and 20 characters&quot;)]\n    public string Username { get; set; }\n\n    &#x5B;Required(ErrorMessage = &quot;Password is required&quot;)]\n    &#x5B;DataType(DataType.Password)]\n    public string Password { get; set; }\n}\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data Annotations<\/strong>: Enforce basic rules for inputs such as <strong>minimum length<\/strong> and <strong>required<\/strong> fields.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Real-Life Example<\/strong>: In a <strong>user registration system<\/strong>, validating that a username and password meet specific criteria (like length or characters allowed) helps prevent malicious inputs from being processed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>ASP.NET Core Data Protection<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"> <strong>ASP.NET Core Data Protection<\/strong> helps in securely storing sensitive information, such as <strong>authentication tokens<\/strong>, <strong>password reset tokens<\/strong>, or <strong>cookies<\/strong>. It encrypts data to prevent unauthorized access.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Example: Protecting Sensitive Data<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Configure Data Protection in <code>Program.cs<\/code><\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nbuilder.Services.AddDataProtection()\n    .PersistKeysToFileSystem(new DirectoryInfo(@&quot;C:\\keys&quot;))\n    .SetApplicationName(&quot;MyApp&quot;);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Using Data Protection<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nprivate readonly IDataProtector _protector;\n\npublic UserController(IDataProtectionProvider provider)\n{\n    _protector = provider.CreateProtector(&quot;UserTokenProtector&quot;);\n}\n\n&#x5B;HttpPost(&quot;store-token&quot;)]\npublic IActionResult StoreToken(string token)\n{\n    var protectedToken = _protector.Protect(token);\n    \/\/ Store protectedToken safely (e.g., in the database)\n    return Ok(protectedToken);\n}\n\n&#x5B;HttpGet(&quot;get-token&quot;)]\npublic IActionResult GetToken(string protectedToken)\n{\n    var unprotectedToken = _protector.Unprotect(protectedToken);\n    return Ok(unprotectedToken);\n}\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Protect<\/strong>: Encrypts sensitive data.<\/li>\n\n\n\n<li><strong>Unprotect<\/strong>: Decrypts the data for use when needed.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Real-Life Example<\/strong>: In a <strong>financial system<\/strong>, tokens used for password resets or payments should be <strong>encrypted<\/strong> before storing them to prevent unauthorized access.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>CORS (Cross-Origin Resource Sharing)<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What is CORS?<\/strong> <strong>CORS (Cross-Origin Resource Sharing)<\/strong> is a security feature implemented in browsers to <strong>control<\/strong> how web pages interact with resources from different origins. When you have an <strong>Angular front end<\/strong> communicating with an <strong>ASP.NET Core API<\/strong>, you need to configure CORS to permit specific interactions while maintaining security.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why Use CORS?<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To allow your <strong>frontend<\/strong> (e.g., <code>http:\/\/localhost:4200<\/code>) to communicate with your <strong>backend<\/strong> API (<code>http:\/\/localhost:5000<\/code>).<\/li>\n\n\n\n<li>To prevent unauthorized domains from accessing your resources.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Configuring CORS in ASP.NET Core<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Add CORS in <code>Program.cs<\/code><\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nbuilder.Services.AddCors(options =&gt;\n{\n    options.AddPolicy(&quot;AllowAngularApp&quot;,\n        builder =&gt;\n        {\n            builder.WithOrigins(&quot;http:\/\/localhost:4200&quot;)\n                   .AllowAnyHeader()\n                   .AllowAnyMethod();\n        });\n});\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Use CORS Policy<\/strong> in Middleware:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar app = builder.Build();\napp.UseCors(&quot;AllowAngularApp&quot;);\napp.UseRouting();\napp.UseAuthorization();\napp.MapControllers();\napp.Run();\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Real-Life Example<\/strong>: In an <strong>e-commerce application<\/strong>, you might need to allow your Angular front end to access products or user data from the backend API. Configuring <strong>CORS<\/strong> ensures that only your specific frontend can interact with your backend services, protecting against unauthorized access from other websites.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Key Takeaways<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Input Validation<\/strong>: Protects the application from malicious inputs. Always validate user inputs to prevent attacks.<\/li>\n\n\n\n<li><strong>Data Protection<\/strong>: Use <strong>ASP.NET Core Data Protection<\/strong> to safely store sensitive information such as tokens or payment information.<\/li>\n\n\n\n<li><strong>CORS Configuration<\/strong>: Allows the <strong>frontend<\/strong> application to interact with the backend securely. Configure CORS policies to permit only authorized frontends.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Practical Questions<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Why is <strong>input validation<\/strong> crucial for application security?<\/li>\n\n\n\n<li>How would you protect sensitive data like <strong>tokens<\/strong> in an ASP.NET Core application?<\/li>\n\n\n\n<li>What is <strong>CORS<\/strong>, and why is it important when building applications with a separate frontend and backend?<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>New Concepts in .NET 8<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>New in .NET 8<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Enhanced CORS Middleware<\/strong>: .NET 8 has streamlined <strong>CORS configuration<\/strong> and error messages to improve debugging when requests are blocked.<\/li>\n\n\n\n<li><strong>Data Protection Improvements<\/strong>: The data protection system has new support for <strong>native AOT<\/strong>, which improves performance, especially when encrypting\/decrypting data.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learning Objectives: Input Validation and Data Protection What is Input Validation? Input validation ensures that user inputs are clean, safe, and valid before processing them. This is crucial to prevent security vulnerabilities like SQL Injection or Cross-Site Scripting (XSS). How to Implement Input Validation in ASP.NET Core: Example: Validating User Input: Real-Life Example: In a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[79],"tags":[],"class_list":["post-2021","post","type-post","status-publish","format-standard","hentry","category-dotnet-8","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Security Best Practices - Code Notebook<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/\" \/>\n<meta property=\"og:locale\" content=\"he_IL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Security Best Practices - Code Notebook\" \/>\n<meta property=\"og:description\" content=\"Learning Objectives: Input Validation and Data Protection What is Input Validation? Input validation ensures that user inputs are clean, safe, and valid before processing them. This is crucial to prevent security vulnerabilities like SQL Injection or Cross-Site Scripting (XSS). How to Implement Input Validation in ASP.NET Core: Example: Validating User Input: Real-Life Example: In a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/\" \/>\n<meta property=\"og:site_name\" content=\"Code Notebook\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-03T10:41:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-03T10:42:43+00:00\" \/>\n<meta name=\"author\" content=\"kerendanino\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u05e0\u05db\u05ea\u05d1 \u05e2\u05dc \u05d9\u05d3\" \/>\n\t<meta name=\"twitter:data1\" content=\"kerendanino\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u05d3\u05e7\u05d5\u05ea\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/\"},\"author\":{\"name\":\"kerendanino\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#\\\/schema\\\/person\\\/195dfc625818eadda7903d456890e24c\"},\"headline\":\"Security Best Practices\",\"datePublished\":\"2024-11-03T10:41:16+00:00\",\"dateModified\":\"2024-11-03T10:42:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/\"},\"wordCount\":539,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#organization\"},\"articleSection\":[\"Dotnet 8\"],\"inLanguage\":\"he-IL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/\",\"url\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/\",\"name\":\"Security Best Practices - Code Notebook\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#website\"},\"datePublished\":\"2024-11-03T10:41:16+00:00\",\"dateModified\":\"2024-11-03T10:42:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/#breadcrumb\"},\"inLanguage\":\"he-IL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/security-best-practices\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Security Best Practices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#website\",\"url\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/\",\"name\":\"Code Notebook\",\"description\":\"Easy coding\",\"publisher\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"he-IL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#organization\",\"name\":\"Code Notebook\",\"url\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"he-IL\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-epic-marketing-05.png\",\"contentUrl\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-epic-marketing-05.png\",\"width\":3626,\"height\":1942,\"caption\":\"Code Notebook\"},\"image\":{\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/#\\\/schema\\\/person\\\/195dfc625818eadda7903d456890e24c\",\"name\":\"kerendanino\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"he-IL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/285cc9389c66aa46da1e26a474b1e90e9efaf3fa21f1b928cbd63ce5f0e89c63?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/285cc9389c66aa46da1e26a474b1e90e9efaf3fa21f1b928cbd63ce5f0e89c63?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/285cc9389c66aa46da1e26a474b1e90e9efaf3fa21f1b928cbd63ce5f0e89c63?s=96&d=mm&r=g\",\"caption\":\"kerendanino\"},\"url\":\"https:\\\/\\\/epicmarketing.co.il\\\/notebook\\\/author\\\/kerendanino\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Security Best Practices - Code Notebook","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/","og_locale":"he_IL","og_type":"article","og_title":"Security Best Practices - Code Notebook","og_description":"Learning Objectives: Input Validation and Data Protection What is Input Validation? Input validation ensures that user inputs are clean, safe, and valid before processing them. This is crucial to prevent security vulnerabilities like SQL Injection or Cross-Site Scripting (XSS). How to Implement Input Validation in ASP.NET Core: Example: Validating User Input: Real-Life Example: In a [&hellip;]","og_url":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/","og_site_name":"Code Notebook","article_published_time":"2024-11-03T10:41:16+00:00","article_modified_time":"2024-11-03T10:42:43+00:00","author":"kerendanino","twitter_card":"summary_large_image","twitter_misc":{"\u05e0\u05db\u05ea\u05d1 \u05e2\u05dc \u05d9\u05d3":"kerendanino","\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da":"3 \u05d3\u05e7\u05d5\u05ea"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/#article","isPartOf":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/"},"author":{"name":"kerendanino","@id":"https:\/\/epicmarketing.co.il\/notebook\/#\/schema\/person\/195dfc625818eadda7903d456890e24c"},"headline":"Security Best Practices","datePublished":"2024-11-03T10:41:16+00:00","dateModified":"2024-11-03T10:42:43+00:00","mainEntityOfPage":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/"},"wordCount":539,"commentCount":0,"publisher":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/#organization"},"articleSection":["Dotnet 8"],"inLanguage":"he-IL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/","url":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/","name":"Security Best Practices - Code Notebook","isPartOf":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/#website"},"datePublished":"2024-11-03T10:41:16+00:00","dateModified":"2024-11-03T10:42:43+00:00","breadcrumb":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/#breadcrumb"},"inLanguage":"he-IL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/epicmarketing.co.il\/notebook\/security-best-practices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/epicmarketing.co.il\/notebook\/"},{"@type":"ListItem","position":2,"name":"Security Best Practices"}]},{"@type":"WebSite","@id":"https:\/\/epicmarketing.co.il\/notebook\/#website","url":"https:\/\/epicmarketing.co.il\/notebook\/","name":"Code Notebook","description":"Easy coding","publisher":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/epicmarketing.co.il\/notebook\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"he-IL"},{"@type":"Organization","@id":"https:\/\/epicmarketing.co.il\/notebook\/#organization","name":"Code Notebook","url":"https:\/\/epicmarketing.co.il\/notebook\/","logo":{"@type":"ImageObject","inLanguage":"he-IL","@id":"https:\/\/epicmarketing.co.il\/notebook\/#\/schema\/logo\/image\/","url":"https:\/\/epicmarketing.co.il\/notebook\/wp-content\/uploads\/2023\/07\/logo-epic-marketing-05.png","contentUrl":"https:\/\/epicmarketing.co.il\/notebook\/wp-content\/uploads\/2023\/07\/logo-epic-marketing-05.png","width":3626,"height":1942,"caption":"Code Notebook"},"image":{"@id":"https:\/\/epicmarketing.co.il\/notebook\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/epicmarketing.co.il\/notebook\/#\/schema\/person\/195dfc625818eadda7903d456890e24c","name":"kerendanino","image":{"@type":"ImageObject","inLanguage":"he-IL","@id":"https:\/\/secure.gravatar.com\/avatar\/285cc9389c66aa46da1e26a474b1e90e9efaf3fa21f1b928cbd63ce5f0e89c63?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/285cc9389c66aa46da1e26a474b1e90e9efaf3fa21f1b928cbd63ce5f0e89c63?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/285cc9389c66aa46da1e26a474b1e90e9efaf3fa21f1b928cbd63ce5f0e89c63?s=96&d=mm&r=g","caption":"kerendanino"},"url":"https:\/\/epicmarketing.co.il\/notebook\/author\/kerendanino\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/posts\/2021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/comments?post=2021"}],"version-history":[{"count":2,"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/posts\/2021\/revisions"}],"predecessor-version":[{"id":2023,"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/posts\/2021\/revisions\/2023"}],"wp:attachment":[{"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/media?parent=2021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/categories?post=2021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/epicmarketing.co.il\/notebook\/wp-json\/wp\/v2\/tags?post=2021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}