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.
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.
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 ».
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!