я в настоящее время хранения данных, представленные от пользователей в мою базу данных уже закодирован как например:Когда и где кодировать ввод пользователя?
<cfquery>
INSERT INTO dbo.MyTable (UserID, Comment)
VALUES
(
<cfqueryparam value="#FORM.UserID#" cfsqltype="cf_sql_integer"/>,
<cfqueryparam value="#EncodeForHTML(FORM.Comment)#" cfsqltype="cf_sql_nvarchar"/>
)
</cfquery>
Очевидно, что это не правильный способ сделать это, потому что теперь я экранированные символы в моей таблице БД, которые полезны только для HTML и трудно выполнять поиск в SQL Server.
Как я могу обеспечить, чтобы я применял EncodeForHTML()
на входе до того, как он попал на сервер, а затем Canonicalize()
данные, полученные для хранения в БД?
Как предотвратить атаки XSS, если я не использую EncodeForHTML? –
Как только вы выберете 'encodeForHTML()', все будет отображаться вместе с кодом. Поэтому вы увидите фактический ' ', отображающийся, а не выполняемый браузером. –
Henry
Это одна из причин, по которой я сохранял уже закодированные данные. Но это оказалось плохой идеей. Я просто хочу кодировать на сервере, а затем Canoncalize его перед хранением в БД. В руководстве CF по предотвращению атак XSS говорится, что я должен кодировать представленные пользователем значения. Так что теперь я не понимаю, как и когда это делать. –