Основная проблема с сессиями PHP и безопасностью (помимо перехвата сеанса) идет с тем, в какой среде Вы находитесь. По умолчанию PHP хранит данные сессии в файле во временном каталоге ОС. Без любой специальной мысли или планирующий это - мировой читаемый каталог, таким образом, вся Ваша информация о сессии общедоступна любому с доступом к серверу.
Что касается поддержания сессий по нескольким серверам. В той точке было бы лучше переключиться, PHP пользователю обработал сессии, где это звонит, Ваши обеспеченные функции к CRUD (создайте, считайте, обновите, удалите), данные сессии. В той точке Вы могли хранить информацию сессии в базе данных или кэш-памяти как решение так, чтобы все серверы приложений имели доступ к данным.
Хранение Ваших собственных сессий может также быть выгодным, если Вы находитесь на общем сервере, потому что оно позволит Вам сохранить его в базе данных, которая Вы часто времена имеют больше контроля затем файловая система.
Классы XDocument, XElement и XAttribute значительно упрощают создание xml в C #. Чем использовать XmlDocument или XmlWriter.
В качестве примера, чтобы создать это:
<RootElement>
<ChildElement Attribute1="Hello" Attribute2="World" />
<ChildElement Attribute1="Foo" Attribute2="Bar" />
</RootElement>
Вы можете сделать это:
XDocument xDocument = new XDocument(
new XElement("RootElement",
new XElement("ChildElement",
new XAttribute("Attribute1", "Hello"),
new XAttribute("Attribute2", "World")
),
new XElement("ChildElement",
new XAttribute("Attribute1", "Foo"),
new XAttribute("Attribute2", "Bar")
)
)
);
Создание XML посредством конкатенации строк - определенно плохая практика. XmlDomDocument не очень многословен или запутан; Я всегда считал, что с ним довольно легко (и безопасно) работать.
Вы пробовали использовать Linq в Xml? он не очень подробный:
XElement xml = new XElement("contacts",
new XElement("contact",
new XAttribute("id", "1"),
new XElement("firstName", "first"),
new XElement("lastName", "last")
),
new XElement("contact",
new XAttribute("id", "2"),
new XElement("firstName", "first2"),
new XElement("lastName", "last2")
)
);
Console.Write(xml);
Прежде чем вы подумаете о создании XML с использованием конкатенации строк вместо правильной библиотеки, прочтите, пожалуйста, спецификацию XML . Обратите особое внимание на такие тонкости, как кодировки и ссылки на символы.
Вы можете сделать это сейчас. Я подожду.
Теперь спросите себя - действительно ли вы хотите убедиться, что ваша объединенная строка действительна в соответствии со всеми этими правилами и самостоятельно написать все вспомогательные функции, или вы хотите использовать хорошо протестированную библиотеку, где вся эта логика была инкапсулирована для вас?
Хорошо.
Рад, что отсортировано.
Нет, не надо. Библиотеки XML в .NET (и других платформах) гарантируют, что вы создаете действительный XML, и экономят много времени, беспокоясь о его повторном синтаксическом анализе. Кроме того, если кому-то другому нужно использовать ваш XML и он жалуется на его неправильность, вы можете исключить сам XML и сэкономить много времени на проверку правильности конкатенации.
Я бы рекомендовал следующий подход в большинстве случаев, когда вы создаете xml.
Преимущества для этого, а не просто создание xml с помощью XMLDocuments 1. Это хорошо определяется с помощью XSD. Другие разработчики знают, какой XML они получают (или что они изменяют) 2. Легко изменить в будущем. 3. Намного меньше вероятность ошибок опечаток в вашем XML-документе.
Сообщите мне, если вам понадобятся какие-либо примеры кода или дополнительная помощь в том, как это будет выполняться.
Примечание: мы генерируем наши файлы cs из xsds при сборке время, чтобы убедиться, что кто-то вручную не изменит сгенерированный код.
XmlWriter не так уж и плох, если вы правильно форматируете код:
StringBuilder builder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(builder))
{
writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteStartElement("Node1");
writer.WriteAttributeString("att1", "value");
writer.WriteEndElement();
writer.WriteStartElement("Node2");
writer.WriteString("inner text");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
}
Вы также можете добавить идентификацию в свой код для облегчения понимания.
using (XmlWriter writer = XmlWriter.Create(builder))
{
writer.WriteStartDocument();
{
writer.WriteStartElement("root");
{
writer.WriteStartElement("Node1");
writer.WriteAttributeString("att1", "value");
writer.WriteEndElement();
writer.WriteStartElement("Node2");
writer.WriteString("inner text");
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndDocument();
}
Используя XmlTextWriter, вы можете перетащить результаты в StringBuilder и использовать полученную строку. Кроме того, с помощью XmlTextWriter вы можете поместить контент в поток. Итак, если вам нужна гибкость, используйте XmlTextWriter.
Если ваш вопрос касается создания XML-файла путем конкатенации строк, не делайте этого. Используйте StringBuilder, если вы собираетесь собрать XML-документ без какой-либо другой помощи.
Я бы избегал ручного создания XML-документа с помощью «конкатенации». Вы увеличиваете вероятность ошибок в сгенерированном xml. Классы создания xml от Microsoft были достаточно тщательно протестированы. Используйте это в своих интересах.