Java Web编程

一、二、三有空补

四.  Web应用的安全

           1.  CSS攻击,跨站脚本攻击

                       跨站脚本,顾名思义,就是恶意攻击者利用网站漏洞往Web页面里插入恶意代码,一般需要以下几个

                条件:

              (1)客户端访问的网站是一个有漏洞的网站,但是他没有意识到;

              (2)在这个网站中通过一些手段放入一段可以执行的代码,吸引客户执行(通过鼠标点击等);

              (3)客户点击后,代码执行,可以达到攻击目的。

                解决方案:对用户输入的数据进行HTML转移处理。如今很多开源框架默认就支持HTML的转义。

           2.  CSRF攻击(Cross Site Request Forgery, 跨站域请求伪造)

                       你这可以这么理解 CSRF 攻击:攻击者盗用了你的身份,伪装成你发送恶意请求。CSRF能够做的事

                情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包

                括:个人隐私泄露以及财产安全。

                具体攻击过程如下:

              (1)用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

              (2)在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正

                       常发送请求到网站A;

              (3)用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

              (4)网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A

                 解决方案:

               (1)将cookie设置成HttpOnly

               (2)增加token

                               其原理是在请求中放入攻击者所不能伪造的信息,并且该新信息不存在于cookie中。鉴于此,系

                        统开发人员可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务端进行token验证,

                        如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。例如,token可以存放

                        在表单中的隐藏域中:<input type="hidden" name="_token" value="tokenvalue"/>。token的值通过服

                        务端生成,表单提交后token的值通过POST请求与参数一同带到服务端,每次会话可以使用相同的

                        token,会话过期,则token失效,攻击者因无法获取token,也就无法伪造请求。

          HttpSession session=request.getSession()
          Object token=session.getAttribute("_token")
          if(token==null||"".equals(token))
          {
             session.setAttribute("_token",UUID.randomUUID().toString());
          }

           3.SQL注入攻击

              解决方案:

            (1)使用预编译语句(PreparedStatement)

                            预编译语句使用参数占位符来替代需要动态传入的参数,这样攻击者无法改变SQL语句的结构,

                     SQL语句的语义不会发生变化,即便用户输入sql,它会将其转义。

                     例如,原语句:

                     select * from hhuser where nick=nickname and password=password

                     例如用户输入 'or '1'='1时,不使用预编译,生成语句为:

                     select * from hhuser where nick='zhangsan' and password='' or '1'='1'

                     使用预编译:        

                     select * from hhuser where nick='zhangsan' and password='\' or \'1\'=\'1'

                     可见发生了转义。

            (2)使用ORM框架,如IBATIS和Hibernate等都支持输入变量的转义实现办法时通过#配置变量

           4.文件上传漏洞

            (1)一般处理方法

                            为了防止用户上传恶意的可执行文件和脚本,以及将文件服务器当做免费的文件存储服务器使用,

                     我们需要对上传的文件进行白名单校验并限制上传文件的大小,上传文件需要重新命名,使共攻者无

                     法猜测上传文件的访问路径。对于上传的文件来说,不能简单地通过后缀名称判断文件的类型,因为

                     恶意攻击可以将可执行文件的后缀名称改成图片或者其它后缀类型,诱导用户执行。因此,判断文件

                     类型需要使用更安全的方式,很多类型的文件起使得几个字节内容使固定得,根据这几个字节的内容,

                     就可以确定文件的类型,这几个字节被称为魔数。

            (2)配合使用imagemaglck

                            对于图片类型的文件,可以上传后对图片进行相应的缩放,破坏恶意用户上传的二进制可执行文

                     件的结构。imagemaglck是一套功能强大、稳定并且开源的对图片进行处理的开发工具包,能处理多

                     种格式的图片文件,可以利用imagemaglck来对图片进行缩放。

                     魔数枚举类型:

public enum FileType {
 
    /** JPEG */
    JPEG("FFD8FF"),
 
    /** PNG */
    PNG("89504E47"),
 
    /** GIF */
    GIF("47494638"),
 
    /** TIFF */
    TIFF("49492A00"),
 
    /** Windows bitmap */
    BMP("424D"),
 
    /** CAD */
    DWG("41433130"),
 
    /** Adobe photoshop */
    PSD("38425053"),
 
    /** Rich Text Format */
    RTF("7B5C727466"),
 
    /** XML */
    XML("3C3F786D6C"),
 
    /** HTML */
    HTML("68746D6C3E"),
 
    /** Outlook Express */
    DBX("CFAD12FEC5FD746F "),
 
    /** Outlook */
    PST("2142444E"),
 
    /** doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db */
    OLE2("0xD0CF11E0A1B11AE1"),
 
    /** Microsoft Word/Excel */
    XLS_DOC("D0CF11E0"),
 
    /** Microsoft Access */
    MDB("5374616E64617264204A"),
 
    /** Word Perfect */
    WPB("FF575043"),
 
    /** Postscript */
    EPS_PS("252150532D41646F6265"),
 
    /** Adobe Acrobat */
    PDF("255044462D312E"),
 
    /** Windows Password */
    PWL("E3828596"),
 
    /** ZIP Archive */
    ZIP("504B0304"),
 
    /** ARAR Archive */
    RAR("52617221"),
 
    /** WAVE */
    WAV("57415645"),
 
    /** AVI */
    AVI("41564920"),
 
    /** Real Audio */
    RAM("2E7261FD"),
 
    /** Real Media */
    RM("2E524D46"),
 
    /** Quicktime */
    MOV("6D6F6F76"),
 
    /** Windows Media */
    ASF("3026B2758E66CF11"),
 
    /** MIDI */
    MID("4D546864");
 
    private String value = "";
 
    private FileType(String value) {
        this.value = value;
    }
 
    public String getValue() {
        return value;
    }
 
    public void setValue(String value) {
        this.value = value;
    }
 
}

 

转载于:https://www.cnblogs.com/jialanshun/p/10592974.html

Java Web 和 Java 的区别及编程实例 Java 是一种通用的编程语言,用于开发各种类型的应用程序。Java Web 是在 Java 的基础上使用 Servlet、JSP、JSF 等技术开发 Web 应用程序的方法。Java 是一种通用的编程语言,而 Java Web 是在 Java 基础上用于开发 Web 应用程序的一种技术栈。本文将详细介绍 Java 和 Java Web 的区别,并提供相应的编程实例。下面是一个简单的 Java Web 程序示例,使用 Java Servlet 输出"Hello, World!希望以上内容对你有所帮助! 阅读详情

相关推荐

52、Java 布局管理与 Web 编程基础

本文详细介绍了Java中的Group布局管理器、Applet编程、Servlet编程以及JSP编程的基础知识。通过示例代码和说明,帮助开发者掌握Java在Web开发和图形界面布局中的应用。文章涵盖了从布局管理到Web服务器配置的多个实用主题,适合希望提升Java Web编程技能的读者。

j7k8l的博客 72

Java web编程(一)

  1、web 是一种基于超文本和http的、全球性的、动态交互的、跨平台的分布式图形信息系统 是建立在Internet上的一种网络服务。 现在发展到web4.0版本 2、web应用是多个web资源的集合,是供浏览器访问的程序 web应用包含的内容:静态、动态 静态部分 HTML页面 css样式 JavaScript脚本 b...

远方 1万+

Java编程与Web服务深入探索

本文深入探讨了Java编程语言在应用程序开发中的多样性和复杂性。从Java Ant应用程序的构建到XML Web服务的远程过程调用,再到Java图形用户界面的开发以及数据库连接的实现,内容覆盖了Java开发的多个关键方面。文章详细解析了Java EE平台和JDBC API的不同版本,以及它们在企业级应用中的应用。此外,还涉及了Java Web模块、Servlets以及JSF框架的使用,为读者提供了全面的Java技术栈概览。

weixin_31315007的博客 420

Web 2.0 编程思想:16条法则

1、在你开始之前,先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户,请清晰的构思你的目标。就像“我需要保存一个书签”或者“我准备帮助人们创建可编辑的、共享的页面”这样的目标,让你保持最基础的需求。很多Web 2.0应用的最初吸引之处就是它的简单,避免并隐藏了那些多余的复杂性。站在创建者的立场,可以想象Google的几乎没有内容的主页,还有del.icio.us的简单的线条。从最终

bladmaster的专栏 2065

Java技术与Web编程术语解析

本文深入探讨了Java技术及其在Web编程中的应用,详细解释了EJB、J2EE、JDBC等关键概念,并探讨了它们在现代企业级应用开发中的作用。同时,介绍了XML、SQL等Web标准的定义及其在数据交换和查询中的重要性。本文旨在为读者提供一个全面的Java与Web编程术语知识框架。

weixin_28888459的博客 322

全面Java编程与Web开发课程笔记

在Java中,类是创建对象的模板或蓝图。类定义了对象将会拥有的属性(成员变量)和方法(函数)。创建对象的过程称为实例化,每个对象都是类的一个实例,具有类定义的属性和方法。以下是一个简单的类定义及对象创建的示例代码:// 类的属性int age;// 类的构造器// 类的方法// 创建Person类的对象// 调用对象的方法在上述代码中,Person类定义了两个属性name和age,以及一个构造器用于初始化这些属性和一个方法introduce。

weixin_32535825的博客 924

Java Web编程技术基础

在Java Web编程中,不得不了解一些基础技术(概念),如:Internet、www、浏览器、TCP/IP协议、Web服务器等。在此,我只涉及以下几处: 1、TCP/IP协议         协议,在计算机网络中的计算机需要相互通信、传输数据,所遵循的统一的沟通规则。有人也曾形象的把协议称之为“世界语”,是一种公认交流的规则而已。 通常TCP/IP协议不是靠单指一个协议,而是由相关的许多协

xcbeyond|疯狂源自梦想,技术成就辉煌 2264

深入理解Java Web数据库编程与Web服务

本文深入探讨了Java Web数据库编程的核心技术,包括JavaServer Pages (JSP)、JavaServer Faces (JSF)和Enterprise Java Beans (EJB)等。通过真实项目示例,分析了Java Web应用程序开发的全过程,包括数据查询、插入、更新和删除等关键操作,并对Web结构、组件、导航和映射关系等进行了详细讨论。同时,介绍了Java Web服务的基本模型,如SOAP/WSDL和RESTful,以及如何构建和保护Web服务。

weixin_35639680的博客 409

使用Java实现Web服务器编程

import java.io.*;import java.net.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; public class WebServer { public static void main(String[...

hello_program_world的博客 1万+

HDRP shader 获取阴影(Custom Pass)

Unity:2021.3.0f1 HDRP:12.1.6

LanQ的博客 2097

科大讯飞(1): 环形6麦语音唤醒—驱动板上的接口

介绍环形麦阵列驱动板上的接口,及其疑问

bing_feilong的博客 1175

Java web编程篇

Java web编程篇

u010668910的博客 500

避坑指南:锐浪报表PictureBox打印图像常见的5大问题及解决方案

本文深入剖析了锐浪报表(Grid++Report)中PictureBox控件打印图像时常见的五大难题,包括图像源加载机制、拉伸失真、动态加载失败、跨平台兼容性及性能优化。文章提供了从原理理解到实战解决方案的完整指南,帮助开发者有效规避图像打印中的常见陷阱,确保报表输出的稳定与高质量。

water的专栏 1148

java ee web编程_javaEE 进行web编程(一)

开发环境搭建下载软件工具包1.下载jdk(从http://www.oracle.com/technetwork/java/javase/downloads/index.html获取合适的jdk),这里我下载安装的是jdk1.6,安装完成后,添加一个系统变量JAVA_HOME,指向jdk主目录如图1所示。然后在系统变量PATH后,添加当前目录“.”和jdk主目录下的lib目录,如图2. 图1 ...

weixin_35702486的博客 511

RPA实战:手把手教你打造抖音自动养号机器人(含避坑指南)

本文详细介绍了如何利用RPA技术从零构建一个智能化的抖音自动养号机器人。内容涵盖环境准备、核心工具选型、拟人化行为流程设计、代码实现模块拆解,并提供了关键的避坑指南与风控对抗策略,帮助开发者高效、稳定地实现账号自动化运营。

orange的博客 559

置顶必读(3) |《滚雪球学SpringBoot》· 高质量专栏介绍,你值得拥有!

《滚雪球学SpringBoot》 并不是普通的技术讲解合集,它是专为开发者精心设计的系统化学习路径。通过不断“滚动学习”,我们将带领你从基础入门到高阶应用,从理解每一行代码到设计和优化大规模分布式系统,最终帮助你成长为一位精通 spring架构 的工程师。

**My Coding Family** 15万+

java网络编程 和 java web有什么区别?

[size=medium] [b]java网络编程 和 java web有什么区别?[/b][/size] [b]网络编程主要是网络通信,实现计算机之间的对话和文件传输。 WEB编程主要就是网站开发。 一个是c/s架构(应用软件,桌面应用程序又称之为客户端-服务器应用程序,Client/Server) 另一个是b/s架构(网站又称浏览器-服务器应该程序,Browser/Se...

yaoming168 1408

Claude Code 从入门到精通,通过实战项目穿插 Agent Skills、MCP、Hooks、子代理、插件等十五个知识点

本文介绍了Claude Code的高级使用技巧,通过一个个人简历网站实战项目,详细讲解了15个核心知识点。主要内容包括:三种权限模式(默认/编辑/计划)的使用与切换;历史会话管理(/resume、/rename、/clear命令);会话回滚功能(/rewind);以及危险参数--dangerously-skip-permissions的注意事项。文章还演示了如何通过计划模式拆分代码文件,并强调了在复杂任务中仔细检查规划步骤的重要性。这些技巧能帮助开发者更高效地使用Claude Code完成项目开发。

1788

java实现网络编程_Java的网络编程:用Java实现Web服务器

超文本传输协议(HTTP)是位于tcp/IP 协议的应用层,是最广为人知的协议,也是互连网中最核心的协议之一,同样,HTTP 也是基于 C/S 或 B/S 模型实现的。事实上,我们使用的浏览器如Netscape 或IE 是实现HTTP 协议中的客户端,而一些常用的web 服务器软件如Apache、IIS 和iPlanet Web Server 等是实现HTTP 协议中的服务器端。Web 页由服务端...

weixin_36477469的博客 540

YOLOv8 改进:使用 MobileNetV3 轻量化架构改进特征提取网络

通过使用 MobileNetV3 作为 YOLOv8 的特征提取器,能够显著降低模型复杂度和运行时资源消耗,同时在一定程度上保持检测精度。这种方法特别适合需要高效计算的边缘设备和嵌入式系统。

走向CTO的路上... 1275

半导体材料仿真:二维材料仿真_(1).二维材料的基本概念

在半导体材料仿真领域,二维材料因其独特的物理和化学性质而受到广泛关注。二维材料,也称为二维纳米材料,是指在二维空间(通常是平面)上具有原子级厚度的材料。这些材料的厚度通常在几个纳米甚至单个原子层的范围内,使得它们在电子、光学、热学和机械性能上表现出与传统三维材料显著不同的特性。本节将详细介绍二维材料的基本概念,包括它们的分类、结构、性质以及在半导体材料仿真中的应用。

2401_87715305的博客 1545

不朽的Java世界上所有关于Java和J2EE Web编程

不朽的Java世界上所有关于Java和J2EE Web编程   Java是一种面向对象的语言,这是一种常见的同义词来最复杂的解决方案。它经常作为一种新的方式来解决复杂的业务和网络解决方案。爪哇显著的方面是J2EE。 J2EE Web编程是另一个名字对于Java的programmings企业版。 J2EE Web开发中是很常见的各种设备。它形成于嵌入式设备,手机,大型企业的服务器和超级计算机它的存在

nriyon的专栏 415

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Java Web编程 一】Java Web编程概述

其实可以这么理解,Web开发就是计算机网络应用层里开发的一个专供Http协议使用的应用程序。在应用层 这篇Blog里我们提到过应用层的定义 应用层是为了解决某一类应用问题,而问题的解决又是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。这些服务通常使用对应的协议,常见的几种服务协议有(HTTP,FTP/TFTP, TELENT)无论是哪种服务,都需要域名服务器(DNS)来解析ip地址才能通信以提供服务 所以其实Web请求实际上是客户使用浏览器充当客户端,通过http协议与部署了Web应用程

MaoLin Tian's Blog 979

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[置顶]java web 编程学习总结

知识点补充: ●JSP是在进行Java Web开发时使用的动态页面编程语言 ●如果你想让你的计算机上能够运行JSP程序,仅安装Jdk还不够,还要安装JSP引擎(即web服务器),常见的web服务器有IIS、Tomcat、Resin、WebLogin、Websphere 等。 ●JSP声明的是一段Java源代码,用来定义类的属性和方法,声明后的属性和方法可以在该JSP文件的任何地方使用 ●J

BAOXF专栏 1246

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: nginx
下一篇: 多线程
anshuo7139
博客等级 码龄10年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值