当前位置: 首页 > news >正文

做网站要求什么条件网站开发专利

做网站要求什么条件,网站开发专利,一个公司是否可以做多个网站,北京网站建设需要花多少钱会话管理存在问题: 1.服务集群部署或者是分布式服务如何实现会话共享 2.会话的不同存储地方的安全性问题 答: 会话共享 可以使用后端集中管理(redis)或者客户端管理 (jwt); 存储安全性 这个还真的没有太好的方式&…

会话管理存在问题:

1.服务集群部署或者是分布式服务如何实现会话共享

2.会话的不同存储地方的安全性问题

答:

会话共享 可以使用后端集中管理(redis)或者客户端管理 (jwt);

存储安全性 这个还真的没有太好的方式,需要配合各种防护策略进行防,特别是基于cookie的前端管理,就算策略很难被攻破,但是有存在用户禁用cookie无法完成会话正常传递问题;所以cookie这种方式就不考虑,基于localStorage虽然可以避免csrf的直接攻击,但是又存在被XSS攻击的可能,所以还要对入参进行检验,防脚本攻击。

package com.example.security.filter;import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;import java.io.IOException;@Component
public class XssFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;XssHttpServletRequestWrapper wrappedRequest = new XssHttpServletRequestWrapper(httpRequest);chain.doFilter(wrappedRequest, response);}
}

 2. 创建 Request 包装类用于转义参数

package com.example.security.filter;import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import java.util.HashMap;
import java.util.Map;public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);}@Overridepublic String[] getParameterValues(String parameter) {String[] values = super.getParameterValues(parameter);if (values == null) return null;int count = values.length;String[] encodedValues = new String[count];for (int i = 0; i < count; i++) {encodedValues[i] = cleanXSS(values[i]);}return encodedValues;}@Overridepublic String getParameter(String parameter) {String value = super.getParameter(parameter);return value == null ? null : cleanXSS(value);}@Overridepublic Map<String, String[]> getParameterMap() {Map<String, String[]> map = new HashMap<>(super.getParameterMap());Map<String, String[]> cleanedMap = new HashMap<>();for (Map.Entry<String, String[]> entry : map.entrySet()) {String[] values = entry.getValue();if (values != null) {String[] cleanedValues = new String[values.length];for (int i = 0; i < values.length; i++) {cleanedValues[i] = cleanXSS(values[i]);}cleanedMap.put(entry.getKey(), cleanedValues);}}return cleanedMap;}private String cleanXSS(String value) {// 简单的 XSS 转义,也可以使用 OWASP 的 AntiSamy 或 Jsoupreturn value.replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("\$", "&#40;").replaceAll("\$", "&#41;").replaceAll("'", "&#39;").replaceAll("\"", "&quot;");}
}

3.注册 Filter

package com.example.config;import com.example.security.filter.XssFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class WebConfig {@Beanpublic FilterRegistrationBean<XssFilter> xssFilterRegistration() {FilterRegistrationBean<XssFilter> registration = new FilterRegistrationBean<>();// 创建过滤器实例registration.setFilter(new XssFilter());// 设置过滤路径,/* 表示拦截所有请求registration.addUrlPatterns("/*");// 设置过滤器名称registration.setName("XssFilter");// 设置加载顺序,数字越小优先级越高registration.setOrder(1);return registration;}
}
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;public class CsrfFilter implements Filter {private String csrfToken;private Set<String> excludedPaths = new HashSet<>();@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 生成 TokencsrfToken = UUID.randomUUID().toString();// 从配置中读取要排除的路径String excludedUrls = filterConfig.getInitParameter("excludedUrls");if (excludedUrls != null && !excludedUrls.isEmpty()) {excludedPaths.addAll(Arrays.asList(excludedUrls.split(",")));}}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;String uri = httpRequest.getRequestURI();// 如果是免校验路径,直接放行if (isExcludedPath(uri)) {chain.doFilter(request, response);return;}// 只对敏感方法(POST/PUT/DELETE)做 CSRF 校验if (isSensitiveMethod(httpRequest.getMethod())) {String clientToken = httpRequest.getHeader("X-CSRF-TOKEN");if (clientToken == null || !csrfToken.equals(clientToken)) {httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Invalid CSRF Token");return;}}// 返回当前 token 给前端(可选)httpResponse.setHeader("X-CSRF-TOKEN", csrfToken);chain.doFilter(request, response);}private boolean isExcludedPath(String uri) {return excludedPaths.stream().anyMatch(uri::startsWith);}private boolean isSensitiveMethod(String method) {return "POST".equalsIgnoreCase(method) ||"PUT".equalsIgnoreCase(method) ||"DELETE".equalsIgnoreCase(method);}}

 注册 CsrfFilter

@Bean
public FilterRegistrationBean<CsrfFilter> csrfFilterRegistration() {FilterRegistrationBean<CsrfFilter> registration = new FilterRegistrationBean<>();registration.setFilter(new CsrfFilter());registration.addUrlPatterns("/*");registration.addInitParameter("excludedUrls", "/login,/register");registration.setName("CsrfFilter");registration.setOrder(1);return registration;
}
在登录成功后生成并设置 Token
@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody LoginRequest request, HttpSession session) {String csrfToken = UUID.randomUUID().toString();session.setAttribute("X-CSRF-TOKEN", csrfToken);return ResponseEntity.ok().header("X-CSRF-TOKEN", csrfToken).build();
}

3. 前端处理
为了让 CSRF Token 被正确发送,前端需要从响应头中提取 X-CSRF-TOKEN 并在后续的 POST 请求中将其作为头部信息发送回去。

http://www.dtcms.com/a/510721.html

相关文章:

  • 商家建设网站的好处哪个应用市场软件最全
  • 北京北站手机网站与PC网站
  • 织梦网站怎么上传将html和wordpress分开
  • 离石网站建设建设企业网站的作用
  • 自己做盗版影视网站app开发费用报价表
  • 自己的服务器做网站金山企业型网站建设
  • 顺义便宜的建站公司域名后面wordpress
  • 沈阳做公司网站的公司wordpress7比2
  • 大学生互助联盟网站建设需求分析说明表郑州网站seo优
  • 河北省建设厅工程信息网站网页设计与制作课程标准中职
  • 个人备案网站做购物网站可以不网站建设教案
  • 如何在服务器里建设网站前端做网站是什么流程
  • 1000并发视频网站可作外链的网站
  • 网站转移权重网站代码语法
  • 台州市建设厅网站加强网站建设的
  • 做网站有免费的服务器吗安徽省同济建设集团网站
  • 网站有吗免费的工业设计的概念是什么
  • 十大图片素材网站图片加字在线制作
  • 怎么样用手机做网站关键词互联网公司排名2014
  • 下载中国建设银行官网站怎么建自己的公众号
  • 织梦网站主页文章列表调用淄博物联网app开发公司
  • 黑龙江专业建站公司怎么注册企业邮箱
  • 做门户网站好还是论坛好电商网站设计与制作
  • 用html做网站搜索框网站收录很少却有排名
  • 庆阳网站设计报价wordpress html5 模板下载
  • 广州市网站建设企业濮阳团购网站建设
  • 大淘客网站免费空间网站建设教程小说
  • jfinal网站开发失物招领网站开发项目需求分析
  • 门户网站搭建软件哪里可以学网站建设
  • 在哪个公司建设网站好WordPress解析域名