Что такое код asp poolidctimeout


Как отследить, какая кнопка была нажата

Есть представление, в котором есть несколько кнопок
Есть контроллер, в котором эти кнопки вызывают метод HttpPost, как определить какую кнопку нажали?

Добавлено через 11 часов 9 минут
Может можно получить id кнопки, которую нажали?

18.04.2012, 09:23

Как узнать какая кнопка была нажата?
такой код: HMTL 3 18.04.2012, 09:31 2 18.04.2012, 15:49 3

Да, если в контроллере обратится form.GetKey(1), то получим наименование нажатой кнопки

но если во View TextBox поставить между двумя кнопками, то при нажатии на первую кнопку будет возвращать name TextBox’а, а при нажатии на последнюю name кнопки

7. Проверка ввода пользователя

Элементы управления для проверки ввода пользователя (validation controls) в ASP.NET 2.0, CompareValidator, CustomValidator, RangeValidator, RegularExpressionValidator, RequiredFieldValidator, ValidationSummary

В реальных Web-приложениях без проверки ввода пользователя не обойтись. Пользователь может не заполнить какие-то требуемые поля, ввести в них явно неверные или, возможно, сознательно вредоносные значения, использовать неверный формат и т.п. Чтобы подобная информация не попала на сервер и не вызвала проблем при обработке, вводимую пользователем информацию рекомендуется проверять.

В ASP.NET проверка всегда производится на сервере плюс в добавление к серверной проверке можно реализовать проверку и на клиенте. Только на клиенте реализовать проверку нельзя: по соображениям безопасности она всегда дублируется на сервере.

Стандартные проверки: на количество символов, цифры или буквы, диапазон значений, соответствие формуле, соответствие маске для строкового значения и т.п.

Если проверка вернула ошибку, то обычно выводится сообщение и обработка страницы прекращается до тех пор, пока пользователь не исправит значение.

Проверки — это еще и защита Web -приложения от хакеров. Стандартно используются две атаки:

· spoofing — хакер генерирует специальный код и посылает его серверу, сообщая, что он «прошел» проверку на клиенте. ASP . NET за счет обязательного дублирования проверок такой класс атак отметает радикально.

· если пользователь может вводить текст неограниченной длины в поля Web-формы, то можно нарваться на переполнение буфера, атаку DDOS или прочие вещи. Проверки и ограничения позволяют решить эту проблему.

Клиентские проверки в ASP.NET реализуются средствами DHTML и JScript . Серверные проверки могут быть реализованы на любом .NET-совместимом языке. Работу с проверками очень упрощает то, что для проверок заранее заготовлены специальные элементы управления — val >s .

Клиентские проверки (в IE4.0 и более поздних версиях) срабатывают, когда пользователь нажимает на кнопку Submit и работают до отправки данных на Web-сервер. Если проверка не пройдена, данные и не будут посланы на Web-сервер.

В IE5.0 и более поздних, в которых поддерживается DHTML, проверки также могут срабатывать для конкретного элемента управления, когда он теряет фокус.

Учитывая различия в версиях и возможностях броузеров, обычно реализация проверок, которые нормально бы работали на броузерах разных версий — достаточно тяжелая и трудоемкая задача. Использование элементов управления .NET, которые автоматом определяют версию броузера и генерируют нужный код, позволяет эту работу во многом упростить.

Серверные проверки выполняются на сервере. Они могут быть реализованы на любом . NET -совместимом языке и по своему характеру более функциональны, чем клиентские (например, можно сравнивать ввод пользователя с данными, хранящимися на сервере). Для любой клиентской проверки в ASP.NET автоматически создается дублирующий ее серверный код проверки.

Какие элементы управления ASP.NET позволяют реализовать проверки клиентского ввода:

· Compare V alidator — ввод пользователя сравнивается со значением в другом элементе управления, фиксированным значением, со значением из файла или проверяется на соответствие типу данных. Используется очень часто (например, для проверки правильности ввода пароля в двух полях);

· CustomValidator — можно реализовать свой собственный код проверки (например, проверяем, правильно ли указан номер телефона и т.п.)

· RangeValidator — проверка, попадает ли введенное пользователем значение в указанный диапазон (например, проверка возраста)

· RegularExpressionValidator — проверка по шаблону (на соответствие подстановочным символам). Проверяем адреса e-mail, почтовые индексы, ИНН, телефонные номера и т.п. Наиболее часто используемые шаблоны уже реализованы в .NET

· RequiredFieldValidator — просто проверяется, введено пользователем значение в это поле или нет;

· ValidationSummary — предназначено для вывода информации о всех ошибках проверки (чтобы пользователь знал, что ему исправлять). Обычно помещается недалеко от кнопки Submit.

Теперь — непосредственно о работе с этими элементами управления.

Принцип работы с validation controls достаточно простой:

1) при помощи T oolbox помещаем на форму нужный validation control;

2) настраиваем его свойство ControlToValidate, определяя тем самым, значение какого элемента управления будет проверяться. Одному обычному элементу управления можно назначить много validation controls. Пока все они не вернут True, будет генерироваться ошибка проверки.

3) настраиваем прочие свойства validation control — выражение для проверки, текст сообщения об ошибке и т.п.

Свойства у разных элементов управления validation разные, но у каждого из них (кроме validation summary) есть два общих свойства:

· Type — проверяемый тип данных

· EnableClientScript — нужно ли реализовывать данную проверку на клиенте (по умолчанию нужно). Клиентские проверки всегда будут созданы на JScript.

Validation controls нужно размещать не в любом месте формы, а в правильном, поскольку при возникновении ошибки на месте vc выводится сообщение. Желательно, конечно, располагать его рядом с проверяемым ЭУ.

По умолчанию то сообщение, которое будет выводиться на месте VC и передаваться ValidationSummary , определяется свойством ErrorMessage . Однако текст сообщения, которое будет выводиться на месте VC, можно переопределить при помощи свойства Text. ValidationSumary всегда передается значение ErrorMessage. Если вы используете в форме ValidationSummary, то ЭУ, значение в котором вызвало ошибку, будет помечен красной звездочкой.

То, как будет выглядеть сообщение об ошибке на месте VC, определяется его свойством Display. Это свойство может принимать три значения:

· Static (по умолчанию) — место под этот элемент управления всегда будет зарезервировано на странице;

· Dynamic — этот элемент управления будет рендериться, как все остальные, и если сообщения нет, его место будет занято другими компонентами формы

· None — вывод сообщения на месте VC будет вообще подавлен.

Иногда приходится к одному обычному ЭУ привязывать сразу несколько проверяющих. Например, у нас есть поле для ввода телефона. Нам может потребоваться проверять его сразу тремя проверяющими элементами:

· RequiredFieldValidator — чтобы пользователь не забыл его заполнить;

· RegularExpressionField — на соответствие маске;

· CustomValidator — есть ли уже такой номер в нашей базе.

Некоторые особенности работы с проверяющими элементами управления.

Для самого простого элемента управления RequiredFieldVal >InitialValue . Это — то значение, с которым не должно совпасть проверяемое поле. По умолчанию оно пусто, и, значит, пользователь не может оставить значение в проверяемом поле пустым. Если у вас для проверяемого поля используется значение по умолчанию, то значение RequiredFieldValidator желательно поменять на такое же значение.

Проверять на пустое значение можно только при помощи RequiredFieldValidator. Если вам нужно проверять на пустое значение и на что-то еще, используется RequiredFieldValidator и дополнительный проверяющий элемент управления.

Для CompareValidator используются следующие свойства:

· ValueToCompare — проверка на соответствие константным значениям. Можно указывать несколько константных значений (их нужно будет разделять вертикальной чертой — |).

Илон Маск рекомендует:  Что такое код cyrus_query

· ControlToCompare — проверка на соответствие значению из другого элемента управления. Обычно для сравнения двух значений паролей.

· Type — проверка на соответствие типу данных.

· Operators — здесь придется указывать имя операторов сравнения: Equal , NotEqual , GreaterThen , GreaterThanEqual и т.п.

Для RangeVal >MinimumValue , MaximumValue и Type .

Особенности работы с RegularExpressionValidator : главное свойство — ValidationExpression . При нажатии на него появляется большое список готовых шаблонов. Можно использовать и свой шаблон (Custom). Список подстановочных символов, которые можно использовать, очень большой.

CustomValidator — самый мощный и самый сложный проверяющий элемент управления. Можно проверять на соответствие формуле, значению из источника данных, значению, возвращаемому COM-компонентом или Web-службой. Используется в сложных ситуациях, например, для проверки паролей, база которых хранится на сервере.

В отличие от других элементов управления, CustomValidator не генерирует серверные и клиентские скрипты за вас — это придется сделать вам. Два главных свойства CustomValidator:

· ClientValidationFunction — клиентский проверяющий скрипт;

· OnServerValidate — серверный скрипт.

Конечно, логическое соответствие клиентского и серверного скрипта вам придется обеспечивать и проверять самостоятельно.

Серверная функция для CustomVal >

Клиентскую процедуру надо писать на JScript вручную на странице HTML (не Codebehind ), сразу после тега Head, например так:

function MyClientValidation(source, arguments)

alert(«I am running on the client! «);

var intValue = arguments.Value;

if (intValue % 2 == 0)

Затем в свойствах CustomValidator для свойства ClientValidationFunction указать имя этой функции , а для свойства EnableClientScript установить значение True. Желательно также определиться с версией броузера, в которой будет выполняться этот скрипт. Для этого нужно открыть свойства страницы (из контекстного меню в дизайнере, щелкнув правой кнопкой по пустому месту в странице) и для свойства Target Schema выбрать нужный броузер, например, I nternet Explo rer 5.0.

Теперь — о ValidationSummary и Page . IsValid .

Обычно, прежде чем продолжать обработку страницы, необходимо убедиться, что все проверяющие элементы управления дали на это «добро». Для проверки всех серверных элементов управления используется свойство Page.IsVal >ValidationSummary .

Свойство IsValid для страницы объединяет через логическое И все проверяющие ЭУ на странице. Если хотя бы один такой элемент вернул false, то IsValid возвращает false.

Информация проверки недоступна во время инициализации и загрузки страницы — только после.

Пример кода для кнопки, в котором проверяется свойство isValid:

Sub cmdSubmit_Click (s As Object, e As EventArgs)

If Page.IsValid Then

Message.Text = «Page is valid!»

’ Perform database updates or other logic here

Если на странице был создан элемент управления ValidationSummary , то он отработает на сервере автоматически, если Is V al >ValidationSummary :

· HeaderText — заголовок списка;

· DisplayMode — отражать сообщения маркированным списком или просто абзацем

· ShowSummary — выводить ли список на странице (по умолчанию true).

· ShowMessageBox — выводить ли список в окне сообщения (по умолчанию false).

Авторизация и аутентификация в MVC 5

ASP.NET >Последнее обновление: 31.10.2015

Релиз ASP.NET MVC 5 ознаменовался выходом новой системой авторизации и аутентификации в .NET приложениях под названием ASP.NET Identity. Эта система пришла на смену провайдерам Simple Membership, которые были введены в ASP.NET MVC 4.

Рассмотрим систему авторизации и аутентификации ASP.NET Identity на примере приложения MVC 5. Итак, при создании приложения MVC 5 Visual Studio предлагает нам выбрать один из типов аутентификации:

Нажав на кнопку Change Authentication , мы можем изменить тип аутентификации, выбрав одно из следующих:

No Authentication : ASP.NET Identity и встроенная система аутентификации отсутствует

Individual User Accounts : проект по умолчанию включает систему ASP.NET Identity, которая позволяет авторизовать как пользователей внутри приложения, так и с помощью внешних сервисов, как google, твиттер и т.д.

Organizational Accounts : подходит для сайтов и веб-приложений отдельных компаний и организаций

Windows Authentication : система аутентификации для сетей intranet с помощью учетных записей Windows

Оставим значение по умолчанию, то есть Individual User Accounts и создадим проект.

Созданный проект уже по умолчанию имеет всю необходимую для авторизации инфраструктуру: модели, контроллеры, представления. Если мы заглянем в узел References (Библиотеки), то увидим там ряд ключевых библиотек, которые и содержит необходимые для авторизации и аутентификации классы:

Это ряд библиотек OWIN, которые добавляют функциональность OWIN в проект, а также три библиотеки собственно ASP.NET Identity:

Microsoft.AspNet.Identity.EntityFramework : содержит классы Entity Framework, применяющие ASP.NET Identity и осуществляющие связь с SQL Serveroм

Microsoft.AspNet.Identity.Core : содержит ряд ключевых интерфейсов ASP.NET Identity. Реализация этих интерфейсов позволит выйти за рамки MS SQL Server и использовать в качестве хранилища учетных записей другие СУБД, в том числе системы NoSQL

Microsoft.AspNet.Identity.OWIN : привносит в приложение ASP.NET MVC аутентификацию OWIN с помощью ASP.NET Identity

Поскольку вся инфраструктура уже имеется в проекте, запустим проект, на отобразившейся в браузере странице найдем ссылку Register и нажмем на нее. На открывшейся странице регистрации введем какие-нибудь данные:

После регистрации логин будет отображаться в правом верхнем углу веб-страницы веб-приложения. Осуществив регистрацию, мы можем разлогиниться, нажав на LogOff, и снова войти в систему. Таким образом, мы можем уже начать пользоваться встроенной системой аутентификации в приложении ASP.NET MVC 5. Теперь же рассомотрим ее основные моменты.

Во-первых, где это все хранится? Куда попадают данные зарегистрированных пользователей?

В данном случае используется подход Code First. В файле web.config уже имеется строка подключения по умолчанию, которая задает каталог базы данных. Если мы раскроем папку App_Data, то сможем увидеть созданную базу данных:

Если вдруг в папке база данных не видна, нажмем вверху окна Solution Explorer на кнопку Show All Files (Показать все файлы).

Мы можем открыть эту базу данных в окне Server Explorer и увидеть ее содержимое:

По умолчанию при регистрации первого пользователя создается следующий набор таблиц:

_MigrationHistory : используется EntityFramework для миграций БД

AspNetRoles : содержит определения ролей

AspNetUserClaims : таблица, хранящая набор клеймов (claim). Claim представляет иную модель авторизации по сравнению с ролями. Грубо говоря, claim содержит некоторую информацию о пользователе, например, адрес электронной почты, логин, возраст и т.д. И эта информация позволяет идентифицировать пользователя и наделить его соответствующими правами доступа.


AspNetUserLogins : таблица логинов пользователя

AspNetUserRoles : таблица, устанавливающая для пользователей определенные роли

AspNetUsers : собственно таблица пользователей. Если мы ее откроем, то увидим данные зарегистрированного пользователя

Ключевыми объектами в AspNet >пользователи и роли . Вся функциональность по созданию, удалению пользователей, взаимодействию с хранилищем пользователей хранится в классе UserManager . Для работы с ролями и их управлением в AspNet >RoleManager . Классы UserManager и RoleManager находятся в библиотеке Microsoft.AspNet.Identity.Core.

Каждый пользователь для UserManager представляет объект интерфейса IUser. А все операции по управлению пользователями производятся через хранилище, представленное объектом IUserStore.

Каждая роль представляет реализацию интерфейса IRole, а управление ролями классом RoleManager происходит через хранилище IRoleStore.

Непосредственную реализацию интерфейсов IUser, IRole, IUserStore и IRoleStore предоставляет пространство имен Microsoft.AspNet.Identity.EntityFramework:

Класс IdentityUser является реализацией интерфейса IUser. А класс хранилища пользователей — UserStore реализует интерфейс IUserStore.

Подобным образом класс IdentityRole реализует интерфейс IRole, а класс хранилища ролей — RoleStore реализует интерфейс IRoleStore.

А для взаимодействия с базой данных в пространстве имен Microsoft.AspNet. >IdentityDbContext

В приложении ASP.NET MVC мы не будем работать напрямую с классами IdentityUser и IdentityDbContext. По умолчанию в проект в папку Models добавляется файл IdentityModels.cs, который содержит определения классов пользователей и контекста данных:

В приложении мы не работаем напрямую с классами IdentityUser и IdentityDbContext, а имеем дело с классами-наследниками.

Илон Маск рекомендует:  Моделирование при сжатии текстовых данных дальhейшие исследоваhия

Класс ApplicationUser наследует от IdentityUser все свойства. И кроме того добавляет метод GenerateUserIdentityAsync() , в котором с помощью вызова UserManager.CreateIdentityAsync создается объект ClaimsIdentity . Данный объект содержит информацию о данном пользователе.

Подобная архитектура позволяет взять уже готовый функционал и при необходимости добавить новый, например, добавить для пользователя новое свойство или добавить новую таблицу в бд.

Я не буду подробно расписывать весь функционал AspNet Identity, который по умолчанию добавляется в проект, обозначу вкратце лишь основные возможности.

Во-первых, чтобы задействовать AspNet Identity, в проект в папку App_Start добавляются два файла. Файл Startup.Auth.cs содержит класс запуска приложения OWIN. Поскольку AspNet Identity использует инфраструктуру OWIN, то данный класс является одним из ключевых и необходимых для работы.

Файл IdentityConfig.cs содержит ряд дополнительных вспомогательных классов: сервисы для двухфакторной валидации с помощью email и телефона EmailService и SmsService , класс менеджера пользователей ApplicationUserManager , добавляющий к UserManager ряд дополнительных функций, и класс ApplicationSignInManager , используемый для входа и выхода с сайта.

Базовая функциональность системы аутентификации и управления учетными записями расположена в двух контроллерах: AccountController и ManageController

В AccountController определены методы для логина, регистрации, верификации кода, отправленного по email или по смс, сброс пароля, напоминание пароля, вход на сайт с помощью внешних сервисов. Контроллер ManageController используется для управления учетной записью и предполагает возможности по смене пароля и управлению телефонными номерами в системе. Для обоих контроллеров уже по умолчанию генерируются все необходимые представления и специальные модели представлений.

Несмотря на то, что по умолчанию нам уже предоставляется готовый функционал, однако в ряде случаев, например, для отправки смс или электронной почты необходима дополнительная настройка. Теперь рассмотрим основные моменты системы AspNet Identity.

Почему ASP.NET не используют в крупных компаниях?

В настоящий момент С# (asp.net) имеет целый ряд преимуществ над тем, что нам дает Java (в плане удобства и синтаксиса языка). Это правда!

Проблема заключается в том, что Java появился раньше, Java был открытым для использования на Linux. В итоге под сервера на Java написали огромный список уникальных решений, которые сейчас используют топовые команды (посмотри, что такое хадуп, например). В итоге, компании либо не видели смысла переписывать все на C#, так как уже имели билды на Java, либо не хотели тратить время на разработку того, что уже есть на Java.

Именно по этой причине Microsoft сейчас активно начинает спариваться с Linux и везде кричит, что они его любят.

Аутентификация и авторизация

Одна из основных проблем безопасности заключается в подтверждении того, что только определенным пользователям разрешен доступ к системе. Здесь начинают действовать понятия аутентификации и авторизации.

Аутентификация подтверждает, что пользователь предоставил корректные данные для доступа в систему. Когда пользователь входит в систему (как правило, с помощью имени пользователя (логина) и пароля, но возможны и некоторые другие маркеры, такие как ключ SSH или зашифрованный ключ), он аутентифицирован.

Авторизация происходит после аутентификации и подразумевает принятие решения о том, имеет ли данный пользователь разрешение сделать что-либо в системе, например, просмотреть страницу или отредактировать запись. Если пользователь получает доступ к ресурсу, который не доступен для других, то он был специально авторизирован для этого.

asp.net web.config impersonation vs application pool > Ask Question

If I impersonate a user in the web.config but the application runs under an application pool which uses another identity, which identity would be used when you access resources (say files) on the server?

Another question, can you run a page under a separate identity from rest of the application?

2 Answers 2

When you access resources on the server the user will be the one specified on the impersonation configuration NOT the one on the application pool

Impersonation enabled for a specific identity. In this instance, ASP.NET impersonates the token generated using an identity specified in the Web.config file.

Impersonation enabled. In this instance, ASP.NET impersonates the token passed to it by IIS, which is either an authenticated user or the anonymous Internet user account.

In case you’re interested, here you have an article with a Identity matrix for different impersonate scenarios.

And yes, you can impersonate programatically as Alex Dn said

Идентификация в ASP.NET

Ты, наверное как и любой программист, занимающийся разработкой web-приложений, ни раз сталкивался с проблемой несанкционированного доступа. Ведь одни сайты рассчитаны на свободный доступ для всех посетителей, другие же являются закрытыми, и доступ к ним предоставляется только отдельным пользователям. Частым решением этой проблемы является идентификация пользователя путем логина/пароля.

Базовые понятия систем безопасности

Существуют два понятия, без которых невозможно обсуждение безопасности:

  • Аутентификация (authentication) – процесс определения личности пользователя, требующий верные логин и пароль, чтобы доказать, что он на самом деле тот, за кого себя выдает.
  • Авторизация (authorization) – это процесс выставления прав пользователю, прошедшего аутентификацию.

Способы аутентификации ASP.NET

Среда ASP.NET предоставляет три способа аутентификации:

  • Windows – аутентификация на основе системы диспетчера локальной сети Windows
    NT.
  • Forms – аутентификация на основе cookies.
  • Passport – аутентификация с помощью службы Passport от
    Microsoft.

Для того, чтобы выбрать тот или иной способ аутентификации потребуется внести изменения в файл конфигурации web.config следующим образом (я выбрал метод Forms — как наиболее актуальную при разработке web-приложений):

Вы можете справедливо заметить, что после внесения показанных выше изменений ничего особенного не происходит.
Эта ситуация возникает из-за того, что мы не запретили доступ анонимным пользователям. Для
такого запрета надо внести еще одно изменение в файле
web.config:

Этот знак — (?) — обозначает всех анонимных пользователей. А включая это правило вы запрещаете им доступ. Теперь каждый пользователь должен быть аутентифицирован, и каждый
не аутентифицированный будет перенаправлен на страницу регистрации.

После того, как вы выбрали режим аутентификации и правила авторизации, вам нужно создать страницу, которая запрашивает информацию у пользователя и решает, можно ли его аутентифицировать. Но об этом чуть позже. А пока я поясню, как мы это будем делать. Пароли и логины мы будем хранить,
например, в файле web.config. Пример того, как это сделать показан ниже:

Небольшие пояснения: параметр loginUrl в теге authentication указывает на страницу регистрации (по умолчанию – default.aspx), а параметр passwordFormat в теге credentials означает, что логин и пароль не зашифрованы (альтернативы – использовать алгоритмы шифрования SHA1 и MD5. О них мы поговорим позже ).

Для проверки верности логина и пароля будем использовать метод
FormsAuthentication. Authenticate(string login,string pass). А для регистрации пользователя в приложение ASP.NET путем создания cookie, и перенаправления на страницу, которая была изначально запрошена пользователем, будем использовать метод
FormsAuthentication. RedirectFromLoginPage(string login, bool CreatePersistentCookie) (второй параметр указывает на то,
каким будет посланный cookie – постоянный (срок годности
— 50 лет, значение true) или нет (false)).

Вот, собственно, и сам код страницы регистрации:

[08001] Ошибка при попытке подсоединения. java.net.SocketTimeoutException: connect timed out Follow

I’ve installed the fresh copy of DataGrip and connected to remote Postgres database. When I try to take a look at the data of some table by double-clicking it or when I write some simple query (select * from table_name) I’ve got very often the following message:

[08001] Ошибка при попытке подсоединения. java.net.SocketTimeoutException: connect timed out

without displaying data.

Please, take a look at the screen shot below.

java.net.SocketTimeoutException: подключитесь таймаут + каталог Google, администратор SDk API

December 2020

2k раз

Я получаю berlow ошибку при использовании учетной записи службы. Тот же самый код работает хорошо в местном и IAM в состоянии создать учетные данные с помощью учетной записи службы.

Илон Маск рекомендует:  Создание якоря

1 ответы

  1. Установите прокси в поле Linux.
  2. При создании хранилища — новый NetHttpTransport () предоставить свой собственный путь, чтобы создать сокет и добавить прокси-сервер в транспорте.

использовать .setTransport (myNetHttpTransport ()) вместо NetHttpTransport ().

мы потратили много времени на это. но как сейчас это, кажется, работает. Пожалуйста, дайте мне знать, если какой-либо помощи в этом .

Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис

Архив номеров / 2006 / Выпуск №1 (38) / Переходим от VBScript к ASP и ASP.NET. Безопасность и синтаксис

Переходим от VBScript к ASP и ASP.NET

Безопасность и синтаксис

Многие программисты используют VBScript для создания сценариев, предназначенных для управления серверами. Некоторые скрипты настолько усложняются, что их трудно использовать без графического интерфейса. Оптимальным решением этой задачи является создание вебприложения на ASP, ASP.NET.

Создавая сценарии на VBScript для обслуживания серверов, таким образом автоматизируя работу системного администратора и службы технической поддержки, сводя до минимума влияние человеческого фактора, программисты приходят к выводу, что некоторые из их скриптов стали неудобными и им необходим графический интерфейс. Например, веб-интерфейс, выбор которого объясняется соображениями безопасности и удобством эксплуатации. Для решения этой задачи рекомендуется ASP, а лучше всего – ASP.NET, который позволяет на порядок повысить безопасность работы приложения.

От VBScript к ASP

У вас может возникнуть вопрос: «Зачем мне переходить на ASP, когда я просто могу использовать DHTML с VBS вставками?» Использовать DHTML или HTA для этих целей не получится, поскольку они основаны на HTML, который действительно позволяет делать вставки на VBScript, однако не поддерживают работу с OLE-объектами. Для программиста, создающего приложения для обслуживания серверов, поддержка OLE-объектов используемой им средой – основное требование, поскольку формирование отчетов, доступ к Active Directory и др. базируется на их использовании.

ASP представляет собой решение, которое поддерживает HTML, OLE-объекты и позволяет делать вставки на различных скриптовых языках: VBScript, JScript.

Переход от VBScript к ASP достаточно прост и безболезнен: исходный код на VBScript остается практически без изменений.

ASP-страницы – это сценарии, программный код которых выполняется при их запросе. Результатом действия скрипта является DHTML-страница, которая формируется на сервере, а затем отображается в браузере клиента. Структура документа на ASP проста: в первой строке всегда указывается язык, с помощью которого созданы скриптовые вставки ASP-страницы. Первая строка любого из сценариев на ASP выглядит следующим образом:

Программный код, находящийся между , выполняется на сервере и подчинен синтаксису одного из выбранных языков. Весь остальной код представляет собой HTML-страницу в явном виде.

Листинг типовой ASP-страницы выглядит следующим образом:

‘ отображение на экране содержимого переменной

После обработки интерпретатором IIS программного кода и преобразования результатов его работы в HTML/DHTML необходимо дать команду на отображение страницы в браузере клиента. Такой командой является «Response.Write q», где q – имя переменной, содержащей фрагмент HTML-кода.

Необходимо отметить, что ASP имеет свою, хотя и скромную объектную модель, описание которой можно найти практически в любой книге, посвященной программированию на ASP в разделе «Приложения».

Настройка IIS для ASP

При создании веб-приложений на основе ASP необходимо учитывать некоторые особенности этого языка.

Первая особенность: поскольку код ASP-страниц исполняется на сервере и только результат в виде HTML-страницы пересылается на клиентскую машину, то для успешного запуска приложения на сервере пользователь должен обладать соответствующими правами. IE, IIS и запускаемые им сервисы представляют собой трехзвенную систему (см. рис. 1).

Рисунок 1. Трехзвенная система

Пусть IIS имеет настройки по умолчанию. В этом случае при загрузке любой ASP-страницы она стартует от имени встроенного пользователя (см. рис. 2). Если страница работает с некими базами данных, например с Active Directory, то пользователь, запускающий данную страницу, должен обладать соответствующими правами системного администратора.

Рисунок 2. Настройка безопасности IIS

Существует несколько способов соблюсти эти условия. Первый – учетную запись встроенного пользователя заменить учетной записью администратора сети. При таком раскладе любой пользователь в сети сможет посетить данную страницу, т.к. она будет запускаться от имени системного администратора. Этот способ предоставляет всем доступ к данной странице, что, согласитесь, неправильно: резко снижается безопасность всей системы. В случае ошибок на странице злоумышленник может легко запустить вредоносный код с правами администратора.

Поэтому разумно использовать другой способ, с помощью которого можно ограничить доступ к ресурсам. В настройках IIS необходимо сбросить флажок (см. рис. 2) с Enable anonymous access и установить его напротив Basic Authentication. Также следует изменить права на файловую структуру используемого сайта, исключив оттуда группу Everyone и добавив соответствующие группы безопасности и назначить им соответствующие права. При такой настройке IIS только системные администраторы получат доступ к данной странице. При попытке любого пользователя, не являющегося администратором сети, получить доступ к странице, IIS будут запрошены имя и пароль пользователя.

Если необходимо расширить круг лиц, которым должен быть доступен данный сайт, и при этом пользователи не являются системными администраторами, то можно воспользоваться вариантом, являющимся синтезом двух ранее изложенных решений. Ограничить доступ на сайт с помощью Basic Authentication и правами на файловую структуру, запускать скрипт, инкапсулированный в страницу, с правами администратора.

Только что мы рассмотрели механизм взаимодействия первого и второго звена в трехзвенной системе. Первым звеном является рабочая станция пользователя, вторым –сервер, на котором установлен IIS. Взаимосвязь этих звеньев осуществляется с помощью одного пользователя. Между вторым и третьим звеном (сервер iis-процессы, порождаемые из asp-процесса) взаимодействие осуществляется с помощью другого пользователя.

Рассмотрим взаимодействие второго и третьего звена подробнее.

При запуске из кода ASP-страницей какого-либо приложения осуществляется взаимодействие между вторым и третьим звеном. IIS порождает процесс, запускаемый от имени другого встроенного пользователя. Поскольку ASP-страница выполняется на сервере, то для запуска приложения необходимы соответствующие права. Управление этой учетной записью пользователя осуществляется в Application Tools (см. рис. 3).

Рисунок 3. Настройка безопасности IIS

Переход от VBScript и ASP к ASP.NET

Теперь, когда мы знакомы c ASP и разобрались с настройкой IIS для ASP-проектов, подведем промежуточный итог, а он не утешителен! Дело в том, что в построенной системе большая брешь в безопасности; поскольку для доступа к АD в ASP-файле в явном виде надо указать имя и пароль системного администратора, еще одним недостатком является указание пароля в разделе «Аnonymous Аccess» вместо встроенной учетной записи указать имя и пароль системного администратора. Конечно, системный администратор постарается защитить файловую систему соответствующим распределением прав, однако принятых мер недостаточно. Необходимо сделать так, чтобы система сама определяла и подставляла имя и пароль пользователя между вторым и третьим звеном, т.е. запускала сервисы от имени пользователя, который вошел на сайт. Поставленная задача успешно решается переходом с помощью ASP.NET и включением режима имперсонализации.

Установка Visual Studio

Перед установкой Visual Studio .NET должен быть предварительно установлен пакет программ, необходимых для ее установки:

  • Microsoft IIS 5/6
  • Microsoft .NET Framework 1.1/2.0
  • Microsoft FrontPage Server Extensions 2000/2002
  • Microsoft Visual J# .Net Redistributable Package 1.1/2
  • Microsoft Windows Installer 2/3(.1)

В полном дистрибутиве перечисленные компоненты находятся в папке WCU, в которой присутствуют соответствующие компонентам подпапки. Если же папки WCU нет, то компоненты необходимо загрузить с сайта Microsoft или установить с дистрибутива соответствующей версии операционной системы.

Таблица 1. Необходимые компоненты для установки Visual Studio

Microsoft IIS 5

Входит в состав Windows 2000 – ver 5.0, XP – ver 5.1

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Рубрика: Программирование / Веб-программирование