Maison >Opération et maintenance >Nginx >Pratique de rédaction de politiques Nginx : prévenir les attaques XSS

Pratique de rédaction de politiques Nginx : prévenir les attaques XSS

WBOY
WBOYoriginal
2023-06-09 21:55:392226parcourir

Avec le développement continu de la technologie Web, les problèmes de sécurité sont devenus de plus en plus importants, parmi lesquels les attaques XSS sont extrêmement courantes. Les attaquants injectent du code dans le site Web afin que les utilisateurs soient attaqués lors de leur navigation sur le site Web, divulguant ainsi leur vie privée ou menant des escroqueries par phishing. Par conséquent, dans le développement Web moderne, la prévention des attaques XSS est devenue une exigence fondamentale.

Afin de prévenir les attaques XSS, nous devons rédiger certaines politiques pour guider le travail du serveur Nginx. Ces politiques peuvent inclure l'inspection des entrées, l'inspection des sorties, le filtrage des cookies, etc. Ce qui suit sera expliqué avec des exemples.

  1. Vérification des entrées

La vérification des entrées fait référence à la vérification des données saisies par l'utilisateur, notamment si le type de paramètres est correct, le filtrage des caractères spéciaux, etc. Pour Nginx, la vérification des entrées peut être implémentée à l'aide d'une combinaison de scripts Lua et d'expressions régulières. Voici un exemple :

location / {
    access_by_lua_block {
        local args = ngx.req.get_uri_args()
        for key, val in pairs(args) do
            if type(val) == "table" then
                for k,v in pairs(val) do
                    if string.match(v, "%W") then
                        ngx.exit(ngx.HTTP_FORBIDDEN)
                    end
                end
            else
                if string.match(val, "%W") then
                    ngx.exit(ngx.HTTP_FORBIDDEN)
                end
            end
        end
    }
}

Dans le code ci-dessus, nous obtenons les paramètres transmis par l'utilisateur via la méthode GET via le script Lua, et utilisons des expressions régulières pour déterminer si les paramètres contiennent des caractères spéciaux. Si des caractères spéciaux sont présents, une page d'erreur 403 est renvoyée.

  1. Vérification de sortie

La vérification de sortie fait référence à la vérification du contenu de sortie du programme back-end, notamment si les balises, les attributs, Javascript, etc. sont sûrs. Pour Nginx, la directive sub_filter du module NGX_LUA peut être utilisée pour implémenter la vérification de sortie. Voici un exemple :

location / {
    proxy_pass http://backend;
    sub_filter_types application/json;
    sub_filter 'bad-word' 'good-word';
    sub_filter_last_modified on;
    sub_filter_once off;
}

Dans le code ci-dessus, nous activons la directive sub_filter pour vérifier les données JSON renvoyées par le programme backend. Si les données renvoyées par le programme backend contiennent un « mauvais mot », remplacez-le par « bon mot ».

  1. Filtrage des cookies

Le filtrage des cookies fait référence à la vérification des cookies définis par l'utilisateur pour assurer leur sécurité. Pour Nginx, le script Lua peut être utilisé pour implémenter le filtrage des cookies. Voici un exemple :

location / {
    access_by_lua_block {
        local h = ngx.req.get_headers()
        local ck = h.cookie
        if ck ~= nil then
            if string.match(ck, "%W") then
                ngx.exit(ngx.HTTP_FORBIDDEN)
            end
        end
    }
}

Dans le code ci-dessus, nous utilisons le script Lua pour obtenir le cookie défini dans l'en-tête de la requête HTTP et utilisons des expressions régulières pour déterminer si le cookie contient des caractères spéciaux. Si des caractères spéciaux sont présents, une page d'erreur 403 est renvoyée.

Ce qui précède est la pratique de rédaction de politiques Nginx pour prévenir les attaques XSS. Bien entendu, il existe de nombreux autres aspects à prendre en compte dans les applications pratiques, tels que la sécurité des en-têtes HTTP, la défense contre l'injection SQL, etc. Par conséquent, pendant le processus de développement, des configurations ciblées doivent être effectuées en fonction de la situation réelle pour améliorer la sécurité des applications Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn