Scala Slick 转义用户输入字符串
Scala Slick Escape User Input Strings
我目前正在开发一项服务,客户可以在该服务中在 Web 界面中输入自由文本。为避免 XSS 或类似攻击,应在后端对文本进行转义。 Scala 或 Slick 是否提供类似于 PHP 的可能性来转义字符串?
到目前为止,我检查了 Whosebug 和 Scala Essential Book 以寻找可行的解决方案,但到目前为止还没有成功。
是否有 Scala 或 Slick 提供的原生解决方案可与 PHP 的 mysql-escape-string 相媲美?
函数mysqli-escape-string from PHP doesn't help you with doing any sanitization against XSS. It was intended to attempt to escape strings, that could cause SQL Injection. It is now deprecated and shouldn't be used anymore. The preferred way in PHP to prevent your code against SQL Injection is to use Prepared Statement with bind variables.
也就是说,Slick 和 Scala 都没有 built-in 函数对 XSS.
进行字符串清理
Slick 有一个 nice feature,它会使用插值来更改您插入的所有字符串以绑定变量,从而防止 SQL 注入 ,但它什么也没有与防止 XSS 相关(它类似于 Prepared Statements 但样板更少)。
为了防止 XSS,您应该使用一些库,它允许对可能包含 XSS 的字符串进行清理。 OWASP 的 Java 项目 java-html-sanitizer 就是这样做的。您可以像这样使用它:
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>"
我目前正在开发一项服务,客户可以在该服务中在 Web 界面中输入自由文本。为避免 XSS 或类似攻击,应在后端对文本进行转义。 Scala 或 Slick 是否提供类似于 PHP 的可能性来转义字符串?
到目前为止,我检查了 Whosebug 和 Scala Essential Book 以寻找可行的解决方案,但到目前为止还没有成功。 是否有 Scala 或 Slick 提供的原生解决方案可与 PHP 的 mysql-escape-string 相媲美?
函数mysqli-escape-string from PHP doesn't help you with doing any sanitization against XSS. It was intended to attempt to escape strings, that could cause SQL Injection. It is now deprecated and shouldn't be used anymore. The preferred way in PHP to prevent your code against SQL Injection is to use Prepared Statement with bind variables.
也就是说,Slick 和 Scala 都没有 built-in 函数对 XSS.
进行字符串清理Slick 有一个 nice feature,它会使用插值来更改您插入的所有字符串以绑定变量,从而防止 SQL 注入 ,但它什么也没有与防止 XSS 相关(它类似于 Prepared Statements 但样板更少)。
为了防止 XSS,您应该使用一些库,它允许对可能包含 XSS 的字符串进行清理。 OWASP 的 Java 项目 java-html-sanitizer 就是这样做的。您可以像这样使用它:
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>"