String Scala平滑转义用户输入字符串

String Scala平滑转义用户输入字符串,string,scala,escaping,slick,String,Scala,Escaping,Slick,我目前正在开发一项服务,客户可以在web界面中输入免费文本。为了避免XSS或类似的攻击,应该在后端转义文本。Scala或Slick是否提供了类似于PHP的转义字符串的可能性 到目前为止,我检查了StackOverflow和Scala Essential Book,以获得一个有效的解决方案,但到目前为止运气不佳。 Scala或Slick提供的本机解决方案是否可以与PHP相比?PHP函数不能帮助您对XSS进行任何清理。它旨在尝试转义字符串,这可能导致SQL注入。它现在已被弃用,不应再使用。PHP中防

我目前正在开发一项服务,客户可以在web界面中输入免费文本。为了避免XSS或类似的攻击,应该在后端转义文本。Scala或Slick是否提供了类似于PHP的转义字符串的可能性

到目前为止,我检查了StackOverflow和Scala Essential Book,以获得一个有效的解决方案,但到目前为止运气不佳。 Scala或Slick提供的本机解决方案是否可以与PHP相比?

PHP函数不能帮助您对XSS进行任何清理。它旨在尝试转义字符串,这可能导致SQL注入。它现在已被弃用,不应再使用。PHP中防止代码被SQL注入的首选方法是使用Prepared语句

也就是说,Slick和Scala都没有针对XSS执行字符串清理的内置函数

Slick有一个函数,它使用插值来绑定变量来更改插入的所有字符串,这会阻止SQL注入,但它与防止XSS无关(它与准备好的语句类似,但样板文件较少)

为了防止XSS,您应该使用一些库,它允许对可能包含XSS的字符串进行清理。OWASP中有一个Java项目,就是这样做的。你可以像这样使用它:

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>"

HtmlSanitizer.sanitize(感谢您的回复。java html sanitizer看起来不错,我会看看的!