Функция mysqli-escape-string из PHP не поможет вам выполнить дезинфекцию против XSS . Он был предназначен для попытки экранирования строк, которые могли вызвать SQL-инъекцию . Теперь он устарел и больше не должен использоваться. В PHP предпочтительным способом защиты вашего кода от SQL-инъекций является использование подготовленного оператора с переменными связывания .
Тем не менее, ни Slick, ни Scala не имеют встроенных функций, выполняющих санацию строк против XSS .
Slick имеет приятную особенность , которая изменяет все вставляемые строки, используя интерполяцию для привязки переменных, что предотвращает SQL-инъекцию , но не имеет ничего общего с предотвращением XSS (это что-то похожее на Подготовленные заявления , но с меньшим количеством шаблонов).
Чтобы предотвратить XSS, вы должны использовать некоторую библиотеку, которая позволяет проводить очистку строк, которая может содержать XSS . Есть проект Java java-html-sanitizer от OWASP, который делает это. Вы можете использовать его как:
object HtmlSanitizer {
//First define your policy for allowed elements
private lazy val policy = new HtmlPolicyBuilder()
.allowElements("p")
.allowElements("a")
.allowUrlProtocols("https")
.allowAttributes("href").onElements("a")
.requireRelNofollowOnLinks()
.toFactory()
def sanitize(unsafeHTML: String) = policy.sanitize(unsafeHTML)
}
и затем:
HtmlSanitizer.sanitize("<p><svg/onload=alert('XSS')</p>") // "<p></p>"