کتابچهی رایگان 60 صفحهای از مایکروسافت در مورد SharePoint Services 3.0 با محتوای زیر:
Introduction to Getting Started with Windows SharePoint Services 3.0 technology
What's new for IT professionals in Windows SharePoint Services 3.0
Administration model enhancements
New and improved compliance features and capabilities
New and improved operational tools and capabilities
Improved support for network configuration
Extensibility enhancements
For further reading: Evaluation guide for Windows SharePoint Services 3.0 technology
Determine hardware and software requirements
About hardware and software requirements
Stand-alone installation
Server farm installation
Plan browser support
About browser support
Levels of browser support
Feature-specific compatibility listed by Web browser
Install Windows SharePoint Services 3.0 on a stand-alone computer
Hardware and software requirements
Configure the server as a Web server
Install and configure Windows SharePoint Services 3.0 with Windows Internal Database
Post-installation steps
Deploy in a simple server farm
Deployment overview
Deploy and configure the server infrastructure
Perform additional configuration tasks
Create a site collection and a SharePoint site
Roadmap to Windows SharePoint Services 3.0 content
Windows SharePoint Services 3.0 content by audience
Windows SharePoint Services 3.0 IT professional content by stage of the IT life cycle
دریافت
کیت Drunken Parrot UI
Not many are familiar with this awesome feature of dotnet core. Aspnet
team is actively maintaining a project named JavascriptServices
; Along with other packages, it includes the NodeServices
package. Using this package, one can easily create an instance of node
and execute JavaScript code (function) in the backend. If you think of it right now, you can see that it actually opens up a wide variety of development opportunities. By opportunities, I mean; the ASP.NET core project is trying hard to make its package eco-system (NuGet) rich but while doing it, why not get advantages of other package eco-system as well, right? When I talk about other than nuget package manager, the first name that comes to my mind is Npm
(node package manager). Npm
is the largest package manager out there on this very day and its growing rapidly. By using NodeServices
package, we can now use (not all of the npm
packages but) most of the npm
packages in our backend development. So, let me show you how to configure NodeServices
in your aspnet core project and use it to execute JavaScript code on the backend.
Learn .NET MAUI while Creating a Contacts App in .NET 7 - YouTube
00:00:00 Introduction
00:02:54 What is .NET MAUI
00:06:13 Prepare Development Environment & Create first project.
00:11:50 Project Structure of .Net Maui
00:19:49 Three elements of stateful .Net Maui app
00:23:12 Page, Layout & View, Namespaces
00:32:23 URL based navigation - .Net Maui
00:50:31 Basics of ListView and Data Binding in .Net Maui
01:05:19 Events Handling of ListView in .Net Maui
01:16:15 Parameters in URL based Navigation & Static Repository in .Net Maui
01:34:56 Stacklayout for Edit Contact page in .Net Maui
01:52:08 View Contact Details & Update Contact (.Net Maui)
02:06:01 Observable Collection
02:14:19 Field Validation with .Net Maui CommunityToolkit
02:26:18 Reusable Control in .Net Maui
02:39:42 Grid Layout and Use reusable control in .Net Maui
02:52:44 ContextActions & MenuItems in ListView for .Net Maui
03:03:05 SearchBar in .NetMaui
۳۰ روز با TDD
اشتباهات متداول با ASP.NET MVC
ASP.NET به صورت پیش فرض در مقابل ارسال هر نوع تگی عکس العمل نشان میدهد و پیغام خطای یافتن خطری بالقوه را گوشزد میکند. اما بین خودمان باشد، همه این قابلیت را خاموش میکنند! چون در یک برنامه واقعی نیاز است تا مثلا کاربران تگ html هم ارسال کنند. برای نمونه یک ادیتور متنی پیشرفته را درنظر بگیرید. خاموش کردن این قابلیت هم مساوی است با فراهم کردن امکان ارسال تگهای مجاز و در کنار آن بی دفاع گذاشتن برنامه در مقابل حملات XSS.
توصیه هم این است که همه جا از توابع مثلا HtmlEncode و موارد مشابه حتما استفاده کنید. ولی باز هم خودمونیم ... چند نفر از شماها اینکار را میکنید؟!
بهترین کار در این موارد وارد شدن به pipe line پردازشی ASP.NET و دستکاری آن است! اینکار هم توسط HttpModules میسر است. به عبارتی در ادامه میخواهیم ماژولی را بنویسیم که کلیه تگهای ارسالی کوئری استرینگها را پاک کرده و همچنین تگهای خطرناک موجود در مقادیر ارسالی فرمهای برنامه را هم به صورت خودکار حذف کند. اما هنوز اجازه بدهد تا کاربران بتوانند تگ HTML هم ارسال کنند.
مشکل! در ASP.NET مقادیر ارسالی کوئری استرینگها و همچنین فرمها به صورت NameValueCollection در اختیار برنامه قرار میگیرند و ... خاصیت IsReadOnly این مجموعهها در حین ارسال، به صورت پیش فرض true است و همچنین غیرعمومی! یعنی به همین سادگی نمیتوان عملیات تمیزکاری را روی مقادیر ارسالی، پیش از مهیا شدن آن جهت استفاده در برنامه اعمال کرد. بنابراین در ابتدای کار نیاز است با استفاده از قابلیت Reflection ، اندکی در سازوکار داخلی ASP.NET دست برد، این خاصیت فقط خواندنی غیرعمومی را برای مدت کوتاهی false کرد و سپس مقصود نهایی را اعمال نمود. پیاده سازی آن را در ادامه مشاهده میکنید:
using System; using System.Collections.Specialized; using System.Reflection; using System.Text.RegularExpressions; using System.Web; using Microsoft.Security.Application;
namespace AntiXssMdl { public class AntiXssModule : IHttpModule { private static readonly Regex _cleanAllTags = new Regex("<[^>]+>", RegexOptions.Compiled); public void Init(HttpApplication context) { context.BeginRequest += CleanUpInput; }
public void Dispose() { }
private static void CleanUpInput(object sender, EventArgs e) { HttpRequest request = ((HttpApplication)sender).Request; if (request.QueryString.Count > 0) { //تمیزکاری مقادیر کلیه کوئری استرینگها پیش از استفاده در برنامه CleanUpAndEncode(request.QueryString, allowHtmltags: false); }
if (request.HttpMethod == "POST") { //تمیزکاری کلیه مقادیر ارسالی به سرور if (request.Form.Count > 0) { CleanUpAndEncode(request.Form, allowHtmltags: true); } } }
private static void CleanUpAndEncode(NameValueCollection collection, bool allowHtmltags) { //اندکی دستکاری در سیستم داخلی دات نت PropertyInfo readonlyProperty = collection .GetType() .GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); readonlyProperty.SetValue(collection, false, null);//IsReadOnly=false
for (int i = 0; i < collection.Count; i++) { if (string.IsNullOrWhiteSpace(collection[i])) continue;
if (!allowHtmltags) { //در حالت کوئری استرینگ دلیلی برای ارسال هیچ نوع تگی وجود ندارد collection[collection.Keys[i]] = AntiXss.HtmlEncode(_cleanAllTags.Replace(collection[i], string.Empty)); } else { //قصد تمیز سازی ویوو استیت را نداریم چون در این حالت وب فرمها از کار میافتند if (collection.Keys[i].StartsWith("__VIEWSTATE")) continue; //در سایر موارد کاربران مجازند فقط تگهای سالم را ارسال کنند و مابقی حذف میشود collection[collection.Keys[i]] = Sanitizer.GetSafeHtml(collection[i]); } }
readonlyProperty.SetValue(collection, true, null);//IsReadOnly=true } } }
در این کلاس از کتابخانه AntiXSS مایکروسافت استفاده شده است. آخرین نگارش آنرا از اینجا دریافت نمائید. نکته مهم آن متد Sanitizer.GetSafeHtml است. به کمک آن با خیال راحت میتوان در یک سایت، از یک ادیتور متنی پیشرفته استفاده کرد. کاربران هنوز میتوانند تگهای HTML را ارسال کنند؛ اما در این بین هرگونه سعی در ارسال عبارات و تگهای حاوی حملات XSS پاکسازی میشود.
و یک وب کانفیگ نمونه برای استفاده از آن به صورت زیر میتواند باشد (تنظیم شده برای IIS6 و 7):
<?xml version="1.0"?> <configuration> <system.web> <pages validateRequest="false" enableEventValidation="false" /> <httpRuntime requestValidationMode="2.0" /> <compilation debug="true" targetFramework="4.0" /> <httpModules> <add name="AntiXssModule" type="AntiXssMdl.AntiXssModule"/> </httpModules> </system.web>
<system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <add name="AntiXssModule" type="AntiXssMdl.AntiXssModule"/> </modules> </system.webServer> </configuration>
برای مثال به تصویر زیر دقت کنید. ماژول فوق، فقط تگهای سبز رنگ را (حین ارسال به سرور) مجاز دانسته، اسکریپت ذیل لینک را کلا حذف کرده و تگهای موجود در کوئری استرینگ را هم نهایتا (زمانیکه در اختیار برنامه قرار میگیرد) حذف خواهد کرد.
دریافت نسخه جدید و نهایی این مثال
VSTest is a very extensible unit test execution framework. The base engine, discovers tests and runs them. It can parallelize across cores, provides process isolation and can integrate with Visual Studio. It has extensibility for different test frameworks, code coverage, test impact analysis, data collection, test result reporting and much more.