导言 现代网络应用很少采用单一技术构建.
一个典型的应用程序结合了一个网络服务器,一个编程语言,一个框架,一个数据库,数据格式,以及后端服务来交付其功能.
对于任何学习网络应用安全的人来说,重要的是在基本层面了解这些技术,不仅要认识它们,还要了解它们在架构中的位置,数据如何通过系统移动,以及可以引入哪些弱点。
本文章涵盖: Java平台 ASP.
NET PHP Ruby on Rails SQL XML Web Services & SOAP Web 应用架构: The Big Pictures 您可以将一个网络应用程序视为一个管道:一个有用的安全问题,需要记住: 一旦用户输入进入应用程序,其去处,处理方式如何,处理是否安全? 1) Java平台(Enterprise Web Applications)Java被广泛用于大型企业应用.
基于Java的网络应用可以在Windows,Linux,Solaris等操作系统上运行,并可使用不同的应用服务器,框架,和第三方组件.
简化流程通用Java术语(快解) Entertainment Java Bean (EJB) An Entertainment Java Bean是一个相对重量级的Java组件,它囊括了特定业务功能的逻辑.
它还能处理交易管理等企业要求.
Plain Old Java Object (POJO) POJO 代表平地 Old Java Object——一个普通的Java对象,而不是像EJB那样的专门组件.
POJO一般比较简单,重量也比较轻,因此在现代Java应用中常见.
Java Servlet A Java Servlet是一个Java组件,接收到HTTP请求并返回HTTP响应.
在许多Java网络堆栈中,servlets是请求处理的中心.
Java网络容器 AJava网络容器为Java网络应用提供了运行时间环境.
例子包括: Apache Tomcat WebLogic JBoss 三进制组件(security Angle) Java应用程序经常依赖第三方组件进行认证,日志,ORM,和UI层.
例如:函数实例认证 JAAS, ACEGI 演示 SiteMesh, Tapestry Database ORM Hibernate 日志4J 安全说明:脆弱依赖可影响整个应用,因此依赖管理和补丁事项. 2) ASP.NET (.NET Web Framework) ASP.NET是微软在.NET平台上构建应用程序的网络应用框架.
常见语言包括: C# VB.NET 简化流程事件-Driven Programme ASP.NET支持由事件驱动的编程模式.
例子:ASP.NET和Security ASP.NET提供内置机制来帮助保护某些共同的脆弱性(包括一些与XSS相关的默认).
然而:框架的特征有所帮助,但仍需要安全的设计与实施。 3) PHP(Popular Server'Side Technology) PHP是一种被广泛使用的服务器端技术,特别是在开源生态系统中.
LAMP Stack (Common Environment) 简化流式PHP和安全PHP比较容易被学习,但安全问题经常出现在以下情况下: 输入验证/编码薄弱的配置是不安全的过时框架或依赖性被使用 键取: PHP本身不是"脆弱性"——执行和配置是产生风险的因素. 4) Ruby on Rails (Rails Framework) Ruby on Rails (Rails)是一个由Ruby编程语言所构建的网络应用框架.
铁路遵循Model-View-Control(MVC)架构: Model:处理数据和数据库操作 查看:使UI/介绍层控制器:处理请求并协调Model和View简化铁路流线铁路之间的流量,以惯例和自动化而出名,但安全取决于:框架版本的宝石/依赖性配置应用代码质量 5) SQL(Structured Query Language) SQL用于访问和管理存储在MySQL,Oracle等关联数据库中的数据