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的博客 925

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万+

Ansys 19 Mechanical 流体密封分析

start point是一个特殊的概念,在仿真中ansys将从start point开始搜索会发生流体渗漏的点,可以简单理解为从start point开始,向四周逐个节点比较节点上的接触压紧力与流体压力,如果流体压力大于压紧力,则发生渗漏。事实上此处的最后一个参数是指定start point类型的,为1代表这是一个“open”的start point。在通常情况下,如果不人为指定start point,程序会自动寻找指定流体压力面的“边界”,对于二维情况,就是曲线的两个端点,对于三维情况就是曲面的边线。

Dio980的博客 1532

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 290

Java web编程篇

Java web编程篇

u010668910的博客 500

ABAP传输自定义IDOC实例

首先确定出站方和入站方,本例中我使用150作为发送方将200作为接收方。 发送端系统配置 进入tcode-SALE,点击定义逻辑系统,这里我定义D01CLNT150为发送端, D01CLNT200为接收端 2,将逻辑系统分配给对应的client 3,进入tcode-WE31,创建IDOC开发段(segment)这里可以按照实际需求创建想要传输的结构,为求简单我创建了ZKNA1并选取了几个客户主数据的字段作为示例 4,进入tcode-WE30,创建Idoc Ty...

Nathan的博客 4077

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

uniapp - 详细解决 H5 网页报错 Uncaught Error: Async component timed out after ? ms.(移动端h5页面白屏或加载缓慢失败,超时报错处理)

uni-app,vue3,网页,h5,移动端,手机H5页面,浏览器,报错,uniapp报错,Asynccomponenttimedoutafter,如何解决这个问题,vue3Asynccomponenttimedoutafter,异步组件超时了怎么办,async,详细解决方案,AsyncComponents异步组件,导致页面打不开了,白屏什么也不显示,网页载入非常慢卡顿,vue3网站报错,超时,nuxt3,详细解决方案,浏览器控制台报错,爆红并且页面卡住了,依旧报错,找不到异步组件的报错

🏆 前端领域优质创作者 3776

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2840

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

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

yaoming168 1408

如何做好软件需求分析?

软件需求分析也称为系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。软件开发一般包括:可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤,需求分时软件开发的第一步骤。用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。

qq_41854911的博客 1415

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

UNet改进(6):基于注意力机制的多尺度医学图像分割方法

本文提出了一种集成多尺度注意力机制的UNet改进模型UNetWithAttention,用于提升医学图像分割性能。该模型在标准UNet架构基础上,设计了并行3×3、5×5、7×7卷积核的多尺度注意力模块,通过特征拼接和Sigmoid激活生成注意力权重,实现了对不同尺寸病变的自适应关注。模型采用分离式设计,将特征提取与特征选择解耦,在编码器-解码器各阶段嵌入注意力模块。实验表明,该方法在视网膜血管分割和肺结节检测任务中优于标准UNet,Dice系数和IOU分别提升2.6%和4.1%,同时保持计算效率。

2501_91516851的博客 1324

山羚羊优化算法(MGO)详解:从自然智慧到优化引擎

山羚羊优化算法(MGO)是一种新型元启发式算法,灵感来源于山羚羊的社会行为和等级制度。该算法模拟了四种核心行为:领地独居雄性(局部开发)、母系山瞪羚群(群体协作)、单身雄性山瞪羚(全局探索)和迁徙觅食(动态扰动)。MGO通过数学建模将这些生物行为转化为优化机制,在探索与开发间实现平衡。算法已成功应用于函数优化、无人机路径规划和支持向量机优化等领域,展现出优异的性能。未来研究将聚焦于参数自适应调整、混合算法设计等方向,以进一步提升算法性能。

qq_42212808的博客 203

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

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

nriyon的专栏 415

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

MaoLin Tian's Blog 979

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

BAOXF专栏 1246

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值