Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在Go中检测xss攻击并错误中止请求_Security_Go_Xss_Go Gin - Fatal编程技术网

Security 如何在Go中检测xss攻击并错误中止请求

Security 如何在Go中检测xss攻击并错误中止请求,security,go,xss,go-gin,Security,Go,Xss,Go Gin,我正在Go中使用dvwright/xss mw中间件来检测xss。该中间件自动从用户提交的输入中删除xss,并请求继续有效响应。 我想检测xss,如果有任何xss脚本,那么通过一个错误,而不是简单地删除xss 我的密码在这里 package main import ( "github.com/dvwright/xss-mw" "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Defau

我正在Go中使用dvwright/xss mw中间件来检测xss。该中间件自动从用户提交的输入中删除xss,并请求继续有效响应。 我想检测xss,如果有任何xss脚本,那么通过一个错误,而不是简单地删除xss

我的密码在这里

package main

import (
    "github.com/dvwright/xss-mw"
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()

    // include as standard middleware
    var xssMdlwr xss.XssMw
    r.Use(xssMdlwr.RemoveXss())

    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })


    type Login struct {
        User     string `form:"user" json:"user" binding:"required"`
        Password string `form:"password" json:"password" binding:"required"`
    }

    r.POST("/login", func(c *gin.Context) {
        var json Login
        if c.BindJSON(&json) == nil {
            if json.User == "manu" && json.Password == "123" {
                c.JSON(http.StatusOK, gin.H{"status": "you are logged in"})
            } else {
                c.JSON(http.StatusUnauthorized, gin.H{"status": "unauthorized"})
            }
        }
    })


    r.Run() // listen and serve on 0.0.0.0:8080
}

请帮助我。

检测和删除XS都是不可能的。相反,请使用默认安全的策略(自动转义,如果有帮助,请不要禁用个别情况下的转义,不要在
元素或异常上下文(如*属性上的
)中设置模板),并创建限制性内容安全策略。谢谢。但是,当我调用端点url 0.0.0.0:8080/login时,POST和json数据为{“user”:“manuprdknfkdngknfkint()”,“password”:“123”},然后输出为{“status”:“your are logging”}。我只想中止请求,而不是处理下一个请求,这个中间件正在删除脚本。为此,我在哪里可以更改代码..您想警告提交XSS的用户吗?而且,没有办法从数据库中过滤出“恶意数据”;只需接受它可能会在那里结束,并据此计划。您无法知道提交的数据是否是恶意的。相应地计划=不信任用户的输入。例如,如果你把它放在HTML中,请确保它总是被转义的。我还希望拒绝恶意请求。我发现节点库可以做到这一点:检测和删除XS都是不可能的。相反,请使用默认安全的策略(自动转义,如果有帮助,请不要禁用个别情况下的转义,不要在
元素或异常上下文(如*
属性上的
)中设置模板),并创建限制性内容安全策略。谢谢。但是,当我调用端点url 0.0.0.0:8080/login时,POST和json数据为{“user”:“manuprdknfkdngknfkint()”,“password”:“123”},然后输出为{“status”:“your are logging”}。我只想中止请求,而不是处理下一个请求,这个中间件正在删除脚本。为此,我在哪里可以更改代码..您想警告提交XSS的用户吗?而且,没有办法从数据库中过滤出“恶意数据”;只需接受它可能会在那里结束,并据此计划。您无法知道提交的数据是否是恶意的。相应地计划=不信任用户的输入。例如,如果你把它放在HTML中,请确保它总是被转义的。我还希望拒绝恶意请求。我在这里找到了这样做的节点库: