string - Scala Slick 转义用户输入字符串

标签 string scala escaping slick

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

到目前为止,我检查了 StackOverflowScala Essential Book 以获得可行的解决方案,但到目前为止还没有运气。 Scala 或 Slick 提供的原生解决方案是否可以与 PHP 的 mysql-escape-string 相媲美?

最佳答案

函数mysqli-escape-string来自 PHP 的代码无法帮助您针对 XSS 进行任何清理。它的目的是尝试转义字符串,这可能会导致 SQL 注入(inject)。它现已被弃用,不应再使用。 PHP 中防止代码遭受 SQL 注入(inject)的首选方法是使用预准备语句 with bind variables .

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

Slick 有一个 nice feature ,这会更改您使用插值绑定(bind)变量插入的所有字符串,从而防止SQL注入(inject),但它与防止XSS无关(它类似于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>"

关于string - Scala Slick 转义用户输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56326329/

相关文章:

javascript - 改变word中的字符

string - 映射字符串中的有序迭代

scala - 在Scala中,如何在不知道长度的情况下获取从第n个元素到列表末尾的列表切片?

mysql - Scala Slick 分页编译,但在运行时崩溃

escaping - Sublime Text 2 片段 : How can I escape a double closing square bracket?

javascript - JavaScript 中的转义引号

python - 当一串列表被传递到 Python 中的 join() 函数时如何解释结果?

c# - 如何在 c#/NETMF 中创建 JSON 字符串?

postgresql - 没有可用的隐式 session Scala Slick

javascript - 在 javascript 正则表达式字符类中转义正斜杠?