Кодировка строки для апострофа в asp.net - PullRequest
2 голосов
/ 20 сентября 2011

У меня возникла проблема при попытке решить проблему, связанную с апострофом.
Я искал SO, но не смог найти ничего, что могло бы мне помочь.

Мой клиентский код JavaScript:

var strUserText = uSettings.replace(/'/g, "'")  

после выполнения вышеуказанной строки форма выполняет отправку

document.form1.submit();  

в коде позади, класс получает эти значения:

sUserSettings = request.form("strUserSettings ")  

результат - полу-truncated string.
Учитывая приведенный выше процесс обработки кода, как я могу сохранить "ASP-блог Джона О'Брэйди" в базе данных?

Мне показалось, что я сохраняю "ASP-блог Джона О'Брэйди", но это не работает.

Ответы [ 4 ]

2 голосов
/ 20 сентября 2011

Ваш вопрос довольно расплывчатый.Почему ты кодируешь апостроф?Это нарушает ваш вывод?

Лучший способ сделать это - отправить ваши данные как есть в базу данных ... дрянное внедрение JavaScript, апостроф, разметка html и все.Затем вы просто кодируете вывод.

Server.HtmlEncode(strUserText)

Кроме того, если вы используете последнюю версию .NET, вы можете закодировать вывод следующим образом

<%: strUserText %>

(предполагая строку strUserTextпо вашему мнению, переменная установлена ​​раньше)

0 голосов
/ 04 октября 2011

не делайте этого:

var strUserText = uSettings.replace(/'/g, "&apos;")

причина в том, что HTML использует символ "&" для разделения строк запроса и полей формы.

Я предлагаю вам ПОСТАВИТЬ свои данные, КАК ЕСТЬ, и обработать замену СТОРОНЫ СЕРВЕРА.

sUserSettings = request.form("strUserSettings ").Replace("'", "whatever")
0 голосов
/ 20 сентября 2011

Ни при каких обстоятельствах вы не должны принимать данные «как есть» и вставлять их в базу данных; серьезно нет-нет .Что касается апострофа - вы можете взглянуть на это решение:

вызов хранимой процедуры с апострофом в аргументе не работает

Ваш вопрос неопределенный, но приведенный вышессылка должна подсказать вам, что решение заключается в том, как сформулирован SQL-запрос.Прежде всего, вам необходимо реализовать правильную проверку / фильтрацию данных ввода и кодировать его ПЕРЕД вставкой в ​​базу данных .

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

0 голосов
/ 20 сентября 2011

Вместо функции Javascript при попытке сохранить ASP-блог Джона О'Брэйди в базе данных используется:

Server.HTMLEncode("John O'Brady's ASP Blog")

результат выше будет John O&#39;Brady&#39;s ASP Blog

А при извлечении из базы данных и при желании ее отобразить используйте

Server.HtmlDecode(NameField) где NameField - имя столбца в таблице.

это приведет к ASP блогу Джона О'Брэйди

...