new String(”xyz“)
наверняка создаст новый экземпляр. "abc"
и "xyz"
хранятся в пуле констант класса, x = x + y
создает StringBuilder
под капотом и, следовательно, создает new String
, поэтому количество строк здесь равно 4.
Однако компилятор может заменить x + y
константой ("xyzabc"
).
См. Server.HTMLEncode
:
Метод HTMLEncode применяет HTML кодировка в указанную строку. это полезен как быстрый метод кодирование данных формы и другого клиента запросить данные, прежде чем использовать их в своем Веб приложение. Кодирование данных конвертирует потенциально опасные символы их эквиваленту в кодировке HTML.
Если кодируемая строка не DBCS, HTMLEncode конвертирует символы следующим образом:
- Знак «меньше» (<) преобразуется в
& lt;
.- Знак «больше» (>) преобразуется в
& gt;
.- Символ амперсанда (&) преобразуется в
& amp;
.- Символ двойной кавычки (") преобразуется в
& quot;
.- Любой символ кода ASCII чей код больше или равен 0x80 преобразуется в
& #
, где является значением символа ASCII.
Это означает, что если вы собираетесь сбросить некоторые данные в поток запроса и эти данные были сохранены в базе данных из поля, введенного пользователем, это не позволит пользователям сказать, что их первый имя:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
В этом примере Server.HTMLEncode
будет кодировать символы <
, >
и "
, оставив это:
<script type="text/javascript">
function doSomethingEvil() { /* ... */ }
</script>
который при отображении в браузере будет выглядеть так:
вместо фактического выполнения.
, он предотвращает атаки XSS (межсайтовый скриптинг), поскольку, если он предотвращает ввод пользователя, превращающийся в скрипты которые можно использовать для выполнения этого типа атаки