Pour protéger votre application Struts 2, vous pouvez utiliser les configurations de sécurité suivantes : Désactiver les fonctionnalités inutilisées Activer la vérification du type de contenu Valider les entrées Activer les jetons de sécurité Empêcher les attaques CSRF Utiliser RBAC Restreindre l'accès basé sur les rôles
Sécurité du framework Struts 2 Configuration et renforcement
Struts 2 est un framework d'application Web Java populaire. Pour protéger vos applications Struts 2 contre les menaces de sécurité, il est crucial de mettre en œuvre des configurations de sécurité appropriées. Ce didacticiel vous guidera étape par étape sur la façon de sécuriser votre application Struts 2.
1. Désactiver les fonctionnalités inutilisées
La désactivation des fonctionnalités Struts 2 inutilisées dans votre application peut réduire la surface d'attaque potentielle. Dans le fichier de configuration struts.xml
, vous pouvez y parvenir en limitant le filtre de servlet defaultAction
à l'analyse de l'action par défaut. Par exemple : struts.xml
配置文件中,您可以通过将 defaultAction
servlet筛选器限制为解析默认动作来实现此目的。例如:
<struts> <constant name="struts.action.excludePattern" value="^/.*/$" /> </struts>
2. 启用内容类型检查
Struts 2提供内容类型检查功能,可防止用户提交不匹配应用程序预期的数据类型的内容。它可以通过在 struts.properties
文件中设置几个属性来启用:
struts.multipart.parser=jakarta-multipart struts.multipart.multiPartParser.maximumRequestSize=2MB struts.multipart.multiPartParser.maximumFileSize=1MB
3. 验证输入
验证从用户接收的输入对于防止注入攻击至关重要。Struts 2提供了内置的验证器,您可以在Action类中使用它们。例如:
@Validate public class MyAction extends ActionSupport { private String name; @Required public String getName() { return name; } }
4. 启用安全令牌
安全令牌用于防止跨站点请求伪造(CSRF)攻击,其中攻击者诱使受害者提交不属于他们的请求。Struts 2允许您在提交表单之前创建并验证安全令牌。您可以通过在 web.xml
文件中配置以下内容启用它:
<filter> <filter-name>struts2-token</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2-token</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
5. 限制访问
基于角色的访问控制(RBAC)可确保只有授权用户才能访问应用程序中的某些资源。Struts 2通过 @RolesAllowed
@RolesAllowed("admin") public String doAdminAction() { // 只有管理员才有权访问此操作 }
2. Activer la vérification du type de contenu
Struts 2 fournit une fonctionnalité de vérification du type de contenu qui empêche les utilisateurs de soumettre du contenu qui ne correspond pas au type de données attendu par l'application. Il peut être activé en définissant quelques propriétés dans le fichierstruts.properties
: @Namespace("/") @Action("/secureAction") @RolesAllowed("secure") public class SecureAction extends ActionSupport { @Required private String input; @Override public String execute() { if (!TokenHelper.validToken()) { return INPUT; } if (someValidationRule()) { return SUCCESS; } else { addFieldError("input", "Invalid input"); return INPUT; } } }
3. Valider l'entrée
🎜🎜La validation de l'entrée reçue de l'utilisateur est cruciale pour éviter les attaques par injection. Struts 2 fournit des validateurs intégrés que vous pouvez utiliser dans les classes Action. Par exemple : 🎜rrreee🎜🎜4. Activer les jetons de sécurité 🎜🎜🎜Les jetons de sécurité sont utilisés pour empêcher les attaques CSRF (Cross-Site Request Forgery), dans lesquelles un attaquant incite une victime à soumettre une demande qui ne lui appartient pas. Struts 2 vous permet de créer et de vérifier des jetons de sécurité avant de soumettre un formulaire. Vous pouvez l'activer en configurant les éléments suivants dans le fichierweb.xml
: 🎜rrreee🎜🎜5 Restreindre l'accès 🎜🎜🎜Le contrôle d'accès basé sur les rôles (RBAC) garantit que seuls les utilisateurs autorisés peuvent accéder à l'application. quelques ressources en . Struts 2 prend en charge RBAC via l'annotation @RolesAllowed
. Par exemple : 🎜rrreee🎜🎜Un cas pratique🎜🎜🎜Voici un exemple de classe Struts 2 Action qui démontre l'utilisation complète des configurations de sécurité : 🎜rrreee🎜En implémentant ces configurations de sécurité, vous pouvez améliorer considérablement la sécurité de votre application Struts 2. la nature et la protéger des menaces communes. 🎜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!