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

c 网站开发简单实例广州网站百度排名推广

c 网站开发简单实例,广州网站百度排名推广,排名优化培训,手机购物网站建设目录 JavaEE-预编译-SQL JavaEE-过滤器-Filter JavaEE-监听器-Listen 思维导图 Java知识点 功能#xff1a;数据库操作#xff0c;文件操作#xff0c;序列化数据#xff0c;身份验证#xff0c;框架开发#xff0c;第三方库使用等. 框架库#xff1a;MyBatis#…目录 JavaEE-预编译-SQL JavaEE-过滤器-Filter JavaEE-监听器-Listen 思维导图 Java知识点 功能数据库操作文件操作序列化数据身份验证框架开发第三方库使用等. 框架库MyBatisSpringMVCSpringBootShiroLog4jFastJson等 技术ServletListenFilterInterceptorJWTAOP待补充 安全SQL注入RCE执行反序列化脆弱验证未授权访问待补充 安全原生开发安全第三方框架安全第三方库安全等待补充 JavaEE-预编译-SQL 预编译SQL语句并执行 , 预防SQL注入问题 String safesqlselect * from news where id?; PreparedStatement preparedStatementconnection.prepareStatement(); preparedStatement.setString(1,s); ResultSet resultSetpreparedStatement.executeQuery(); 提前编译好执行逻辑你注入的语句不会改变原有逻辑 预编译写法 safesql 是一个预编译的 SQL 查询语句其中 ? 是一个占位符表示将在执行时动态替换。使用 PreparedStatement PreparedStatement 是 Statement 的子接口用于执行预编译的 SQL 语句。通过调用 connection.prepareStatement(safesql) 创建一个 PreparedStatement 对象。设置参数 使用 setXXX 方法设置占位符的值。在这里使用 setString(1, s) 将字符串 **s 的值设置到第一个占位符上及sql语句中的。**这种方式防止了 SQL 注入攻击因为参数值是通过预编译的方式传递的而不是通过直接拼接字符串。执行查询 调用 executeQuery() 执行查询得到 ResultSet 对象。处理结果集 根据业务需要处理查询结果集的数据。打印最终的预编译 SQL 语句用于调试 System.out.println(safesql); 这行代码用于在控制台打印最终生成的预编译 SQL 语句。这对于调试时检查生成的 SQL 语句是否正确是有帮助的。 // 预编译写法 String safesql SELECT * FROM news WHERE id?;// 使用PreparedStatement try (PreparedStatement preparedStatement connection.prepareStatement(safesql)) {// 设置参数防止SQL注入攻击preparedStatement.setString(1, s);// 执行查询ResultSet resultSet preparedStatement.executeQuery();// 处理结果集...// 打印最终的预编译 SQL 语句用于调试System.out.println(safesql); } catch (SQLException e) {e.printStackTrace(); }使用不安全写法可以进行sql注入select * from news where id1: 这是一个正常的SQL查询目的是从名为news的表中选择ID为1的记录。 union: 这是SQL的关键字用于合并两个查询的结果集。select 1,2,3,version(),user(),database(): 这是一个注入的查询它返回了一些固定的值1、2、3以及数据库的版本信息version()、当前用户user()和当前数据库database()的信息。 通过将这两个查询合并攻击者试图将恶意的查询注入到正常的查询中从而获取数据库的敏感信息。这种类型的攻击被称为联合查询注入。 使用预编译写法固定sql语句的逻辑防止进行sql注入 JavaEE-过滤器-Filter Filter被称为过滤器过滤器实际上就是对Web资源进行拦截做一些处理后再交给下一个过滤器或Servlet处理通常都是用来拦截request进行处理的也可以对返回的 response进行拦截处理。开发人员利用filter技术可以实现对所有Web资源的管理例如实现权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 1、创建过滤器 2、过滤器内置方法 init  doFilter destroy 3、过滤器触发流程 WebFilter(/xss) filter     filter-namexssFilter/filter-name     filter-classcom.example.filter.xssFilter/filter-class /filter filter-mapping     filter-namexssFilter/filter-name     url-pattern/xss/url-pattern /filter-mapping 4、过滤器安全场景 Payload检测权限访问控制红队内存马植入蓝队清理内存马等 内存马参考https://mp.weixin.qq.com/s/hev4G1FivLtqKjt0VhHKmw 1、创建新的项目 创建新的项目FilterDemo1在对应的包名上创建分类包filter与servlet在servlet下创建TestServlet 并进行检测启动服务器尝试进行Xss攻击发现可以 2、创建过滤器 在对应的filter下创建XssFilter并实现Filter 接口中的所有方法3、过滤器内置方法 init(FilterConfig filterConfig): 该方法在过滤器被初始化时调用只会执行一次。用于执行一些初始化操作例如获取配置信息等。 doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain): 这是过滤器的主要方法在每次请求被过滤时都会调用。doFilter 方法中的 filterChain.doFilter(request, response) 表示继续执行过滤器链如果没有更多的过滤器最终将调用目标资源例如 Servlet 或 JSP。如果在 doFilter 中不调用 filterChain.doFilter则请求将被拦截不会继续传递。 destroy(): 该方法在过滤器被销毁时调用只会执行一次。用于执行一些清理工作释放资源等。 package com.example.filterdemo1.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import java.io.IOException;WebFilter(/test) public class XssFilter implements Filter {Override//中间件启动后就自动运行public void init(FilterConfig filterConfig) throws ServletException {System.out.println(xss开启过滤);}Override//中间件关闭后就自动运行public void destroy() {System.out.println(xss销毁过滤);}Override//doFilter 访问路由触发的方法public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(xss正在过滤);//过滤代码就应该在放行前//如果符合就放行不符合就过滤拦截//XSS过滤 接受参数值 如果有攻击payload 就进行拦截// 接受参数值 如果没有攻击payload 就进行放行HttpServletRequest request (HttpServletRequest) servletRequest;String code request.getParameter(code);if(!code.contains(script)){ //没有攻击payload//放行filterChain.doFilter(servletRequest,servletResponse);}else{System.out.println(存在XSS攻击);//继续拦截}} }4、过滤器触发流程 WebFilter(/test) filter filter-namexssFilter/filter-name filter-classcom.example.filter.xssFilter/filter-class /filter filter-mapping filter-namexssFilter/filter-name url-pattern/test/url-pattern /filter-mapping 5、利用过滤器简单实现cookie身份验证 在servlet下创建AdminServlet WebServlet(/admin) public class AdminServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(欢迎进入管理员页面);} }在filter下创建AdminFileter先不加入判断获取到浏览器本身的cookie值 检查请求中是否包含名为 “user” 且值为 “admin” 的Cookie。如果符合条件则放行请求否则输出 “非管理员访问”。相应进入管理员页面必须先在浏览器中添加对应判断的cookie值如果对应不上则是非管理员访问不予通过 package com.example.filterdemo1.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import java.io.IOException;WebFilter(/admin) public class AdminFileter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(admin身份检测开启);}Overridepublic void destroy() {System.out.println(admin身份检测销毁);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(admin身份检测进行);//检测Cookie过滤HttpServletRequest request (HttpServletRequest) servletRequest;Cookie[] cookiesrequest.getCookies();//对Cookie进行遍历获取for(Cookie c:cookies){String cName c.getName();//获取cookie名String cValue c.getValue();//获取cookie值System.out.println(cName);System.out.println(cValue);if(cName.contains(user) cValue.contains(admin)){// filterChain 是一个 FilterChain 对象代表过滤器链。// doFilter() 方法用于将请求和响应对象传递给过滤器链中的下一个过滤器或目标资源。// 即当前过滤通过filterChain.doFilter(servletRequest,servletResponse);}else {System.out.println(非管理员访问);}}} }XSS过滤 package com.example.filterdemo1.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import java.io.IOException;WebFilter(/test) public class XssFilter implements Filter {Override//中间件启动后就自动运行public void init(FilterConfig filterConfig) throws ServletException {System.out.println(xss开启过滤);}Override//中间件关闭后就自动运行public void destroy() {System.out.println(xss销毁过滤);}Override//doFilter 访问路由触发的方法public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(xss正在过滤);//过滤代码就应该在放行前//如果符合就放行不符合就过滤拦截//XSS过滤 接受参数值 如果有攻击payload 就进行拦截// 接受参数值 如果没有攻击payload 就进行放行HttpServletRequest request (HttpServletRequest) servletRequest;String code request.getParameter(code);if(!code.contains(script)){ //没有攻击payload//放行filterChain.doFilter(servletRequest,servletResponse);}else{System.out.println(存在XSS攻击);//继续拦截}} }开启过滤后发现成功拦截Xss攻击 内存马参考https://mp.weixin.qq.com/s/hev4G1FivLtqKjt0VhHKmw JavaEE-监听器-Listen 参考https :// blog . csdn . net / qq_52797170 / article / details / 124023760 -监听ServletContext、HttpSession、ServletRequest等域对象创建和销毁事件 -监听域对象的属性发生修改的事件 -监听在事件发生前、发生后做一些必要的处理 1、创建监听器 2、监听器内置方法 3、监听器触发流程 WebListener listener ....... /listener 4、监听器安全场景 代码审计中分析执行逻辑触发操作红队内存马植入蓝队清理内存马等 创建新的项目 创建新的项目ListenDemo1在对应的包名上创建分类包listenerr与servlet在servlet下创建CSession DSession并进行检测DSession一个简单的Servlet对应一个/ds的URL映射。在收到GET请求时它会销毁当前请求的HttpSession listener/ListenSession package com.example.listendemo1.listener;import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener;WebListener public class ListenSession implements HttpSessionListener {Overridepublic void sessionCreated(HttpSessionEvent se) {//监听检测有Session创建就会执行这里System.out.println(监听器监听到了session创建);}Overridepublic void sessionDestroyed(HttpSessionEvent se) {//监听检测有Session销毁就会执行这里System.out.println(监听器监听到了session销毁);} }这段代码定义了一个实现 HttpSessionListener 接口的监听器类 ListenSession用于监听HttpSession的创建和销毁事件。 对于HttpSessionListener 当一个新的HttpSession被创建时sessionCreated方法将被调用。当一个HttpSession被销毁时sessionDestroyed方法将被调用。 Servlet/CSession package com.example.listendemo1.Servlet;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException;WebServlet(/cs) public class CSession extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(Servlet里面创建Session);//创建Sessionreq.getSession();} }Servlet/DSession package com.example.listendemo1.Servlet;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;WebServlet(/ds) public class DSession extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(Servlet里面销毁Session);//销毁Sessionreq.getSession().invalidate();} }监听器的触发流程 在 web.xml 中增加如下内容放置在 web-app 标签内 WebListener listener ....... /listener注册监听器在Web应用中你需要将监听器注册到相应的组件上。例如在web.xml文件中配置监听器或者使用注解如WebListener标记监听器类。事件发生当与监听器关联的特定事件在Web应用中发生时监听器会被触发。调用监听器方法监听器类中实现的相应方法如sessionCreated、sessionDestroyed等将被调用。这些方法包含与事件相关的信息允许监听器执行特定的逻辑。执行自定义逻辑在监听器方法中你可以编写自定义的逻辑以响应事件。这可能包括记录日志、修改数据、发送通知等。 思维导图
http://www.hkea.cn/news/14304367/

相关文章:

  • 字体 wordpress百度网站优化 件
  • 网站优化工具分析工具dede网站建设教程云盘
  • 网站建设提高信息江西网站做的好的企业文化
  • 让人家做网站需要问什么问题萝岗哪家网站建设好
  • 如何在720云网站做全景视频彩票网站建设需要什么
  • 网站建设发布教程企业宣传
  • 做狗狗网站的背景图dedecms蓝色企业网站模板免费下载
  • 网页设计实习报告总结长沙seo男团
  • 电子商务网站的主要评价指标有网站建设 人员 年终总结
  • 增城高端网站建设网站定制怎么收费
  • 教研组网站的建设小型网站建设实训教程
  • 营销型网站建设设计网站平台规划方案
  • 关于网站开发的论文表白二维码制作网站
  • 顺德网络营销网站腾冲网站建设
  • 桂林市做网站的公司wordpress自定义字段找不到
  • 江苏建设人才网站西安今天的新消息未央区
  • 南京网站建设公司 ww襄樊市网站建设公司
  • 半路学网站建设难吗宝石网站建设
  • 网站开发全栈教程网站免费建站ppa
  • 中间商网站怎么做为什么谷歌网站打不开
  • 设计感的网站企业网站的优点和缺点
  • 做网站项目的弊端天津seo推广服务
  • 做信息网站能挣钱吗网站推广是网站建设完成之后的长期工作
  • 做一个自己的网站要多少钱重庆网站建设公司排名
  • 给村里做网站企业网站建设公司排名
  • 门户网站样式网页设计与制作工作
  • 自己做衣服的网站代理网页游戏需要多少钱
  • 国内专业网站建设个人网站经营性备案查询
  • 网站运营主体中企高呈网站建设
  • 帮忙做ppt赚钱的网站mip网站