如何消除网站安全的七大风险

news/2024/5/15 16:01:58/文章来源:https://blog.csdn.net/u011233568/article/details/44060801

以工作中某项目的安全改善过程为例,分享了常用网站安全性的典型问题和解决对策,希望对网站开发者有借鉴意义。

有过网站开发经验的朋友都知道网站安全是构建网站时必须要考虑的一个因素,网站安全的重点在于服务器的安全配置管理以及程序脚本的完善性。值得注意的是,如果服务器的账号和权限由于管理不善而泄露了,即使技术上网站系统再安全,也不可避免会受到攻击。

在笔者曾经参与过的一个项目中,客户方邀请了专业的第三方安全测试公司进行了安全性的全面检测,同时也针对性地进行了安全性的改善,特别是在应用程序方面。此文将分享改善过程中的几个典型问题的分析和解决对策,包括SQL注入攻击、跨站点脚本攻击、验证码绕过等,希望能够为大家在改善网站安全方面的工作提供参考,并采取相应的防范措施。


项目背景

该项目使用的技术和平台:

OS:Windows 2008 Server, Enterprise Edition 64-bit

Database:Microsoft SQL 2005 Server, Standard Edition

WebServer:IIS7.0

开发平台:.NET Framework 2.0

考虑到网站安全的跨平台和通用性,文中讨论时仅提供对应策略不使用实际代码,这里所有的项目网站用到的域名统一用example.com代替。


改善之前

第三方专业安全测试公司进行测试,其中的重点问题列表如下:

未标题-2

问题1:易受到SQL注入攻击

风险攻击者可以通过应用程序发送数据库命令,这些命令将被服务器执行。这可以用来对数据库进行完全控制。这些SQL注入漏洞可以通过在其中一个区域插入“and 7 = 7 -”或“and 8 = 9 -”,并比较结果进行判断。

分析SQL注入攻击是由于服务器对参数检查不够,而导致攻击者借此获得敏感信息。因此,需要使用参数化查询以确保攻击者无法操作数据库的SQL查询语句。例如,如果应用程序要求输入名称,那它应该只接受字母字符、空格和撇号,而不接受任何其他字符。也就是说,在应用程序中的所有输入域实施服务器端白名单技术。特别是所有用于SQL语句的输入域,需要空格的都应该用引号括起来。

改善在程序中所有可接受外部参数的地方进行逐一识别,以过滤危险字符。如在全局函数中定义“禁止字符串列表”,该表中列出所要过滤出的SQL攻击代码可能包含的字符串。

and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare |<|>|’|(|)|{|}

//当然可以根据网站的特点完善和修改本列表

接下来做如下处理:

未标题-1

问题2:易受到跨站点脚本攻击

风险此漏洞可以被用来获取身份验证Cookie,攻击管理员账户,或使应用程序的用户攻击其他服务器和系统。该漏洞可以通过在某区域中插入“<script>alert(‘23389950’);</script>”来判断。

分析这也需要在本网站的所有输入域实施服务器端白名单技术。如果需要特殊字符,应该转换为更安全的形式。如适用于各种语言的HTML转码:

  •  &应转换为 &;
  •  “应转换为”;
  •  ‘应转换为&39;
  •  >应转换为>;
  •  <应转换为<。

改善除了这些标准的HTML转码之外,对于可疑字符串也要进行强化检查和转化,并进一步执行以下操作:(1)对各页面的输入参数进行强化检查;(2)对原来只在客户端判断的参数,在服务器端进一步强化检查;(3)最终提供了全局的转码和过滤的函数。当然这需要在性能和扩展性以及安全性方面的平衡综合考虑。

问题3:非安全的CrossDomain.XML文件

风险为解决Flash/Flex系统中的跨域问题,提出了crossdomain.xml跨域策略文件。虽然可以解决跨域问题,但是也带来了恶意攻击的风险,如果该策略文件里允许访问任何域,就可能允许发起对网络服务器的跨站点请求伪造和跨站点脚本攻击。比如,不安全Flash应用程序可能会访问本地数据和用户保存的网页记录,甚至传播病毒和恶意代码。

分析考虑如何确保只对提供安全资源的可信域开放允许。

改善经过调查,发现在程序目录下的crossdomain.xml文件里的配置如下:

<?xml version=”1.0″?>

<!DOCTYPE cross-domain-policy SYSTEM ”http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”>

<cross-domain-policy>

<allow-access-from domain=”*” />

</cross-domain-policy>

文件中的allow-access-from 实体设置为星号设置为允许任何域访问,将其修改为 <allow-access-from domain=”*.example.com” />,表示只允许本域访问,该问题就解决了。

问题4:Flash参数AllowScript-Access 已设置为always

风险当AllowScriptAccess为always时,表明嵌入的第三方Flash文件可以执行代码。攻击者此时就可以利用该缺陷嵌入任意第三方Flash文件而执行恶意
代码。

分析AllowScriptAccess参数可以是“always”、”sameDomain”或“never”。三个可选值中,“always” 表示Flash文件可以与其嵌入到的 HTML 页进行通信,即使该Flash文件来自不同于HTML页的域也可以。当参数为“sameDomain”时,仅当Flash文件与其嵌入到的HTML页来自相同的域时,该Flash文件才能与该HTML页进行通信,此值是AllowScriptAccess 的默认值。而当AllowScriptAccess为 “never”时,Flash文件将无法与任何HTML页进行通信。

因此需要将AllowScriptAccess参数设置为“sameDomain”,可以防止一个域中的Flash文件访问另一个域的 HTML 页内的脚本。

改善

<param

name=”allowScriptAccess” value=”always” />

改为

<param

name=”allowScriptAccess” value=“sameDomain” />

问题5:网站后台管理通过不安全链接实施

风险管理访问没有强制实施SSL,这可能允许攻击者监视并修改用户和服务器之间的发送的包括账户凭据在内的所有数据。如果攻击者通过代理或者路由软件拦截服务器和管理员间的通信,敏感数据可能被截获,进而管理员账户可能会受到危害。

分析管理访问没有强制实施SSL,为防止数据拦截,管理访问应该强制执行HTTPS (SSL3.0)。

改善运维对服务器进行了配置调整,单独配置支持了SSL3.0访问管理后台。

问题6:验证环节可以被绕过

风险用户发布信息时,虽然有页面的验证码防止自动恶意发布,但仍可能被绕过进行自动提交。绕过的方式之一是使用过滤和识别软件,之二是可以利用Cookie或Session信息绕过验证码。

分析图像失真机制本身不是特别强,可以很容易地使用公开的过滤和识别软件来识别。生成的图片也是可以预测的,因为使用的字符集很简单(只是数字),建议实现一个更强大的验证码系统。

Cookie或session信息处理有漏洞导致验证码被绕过, 确保每一个链接只能取得唯一的验证码,并确保每个请求产生并需要一个新的验证码。

改善根据需要增加验证码的复杂度,而不只是单数字。

经过分析发现是因为验证码被存入了Session里,而开发人员忘记在提交之后清空Session中的验证码的值,导致验证码在过期时间内一直可用,从而可能被利用多次提交。因此在提交后追加了及时清空验证码的操作。

问题7:泄露敏感信息

风险此信息只能用于协助利用其他漏洞,并不能直接用来破坏应用程序。网站的robots.txt文件里可以获得敏感目录的信息,这可能允许攻击者获得有关应用程序内部的其他信息,这些信息可能被用来攻击其他漏洞。

分析robots.txt不应在提供管理界面的信息。如果robots.txt文件暴露了Web站点结构,则需要将敏感内容移至隔离位置,以避免搜索引擎机器人搜索到此内容。

改善当然robots.txt要根据SEO的要求来处理,但也要同样注意安全性。如:disallow:/testadmin/,其中testadmin为管理后台,就被暴露了。可以根据实际情况是否必要决定删除robots.txt文件或者把敏感目录单独配置禁止搜索引擎搜索。

其他问题汇总

除此以外,还有很多其他危害性相对较低的问题,分析如下。

问题:可能通过登录页面枚举出用户名,因为根据账户是否存在的错误信息是不同的。

对策:修改错误信息使之不带有提示性,如“您输入的邮箱或密码不对!” 并且超过一定次数则对该IP进行锁定。

问题:检测到可能泄露敏感信息或被恶意利用的冗余文件,如测试文件、bak文件、临时文件。

对策:除去服务器中的相应文件。

问题:发现潜在机密信息,如名为order的文件很容易被联想到用户订单。

对策:避免在文件名中含有完整的敏感词汇或不要在容易猜测到的文件中保存敏感信息,或者限制对它们的访问。

问题:发现内部信息泄露。

对策:除去代码中漏删的内部IP地址,内部组织,人员相关信息等。


共性原因分析

在发现的问题中,71%是与应用程序相关的安全性问题。可以修改应用程序相关的安全性问题,因为它们是由应用程序代码中的缺陷造成的。29%是基础结构和平台安全性问题,可以由系统或网络管理员来修订“基础结构和平台安全性问题”,因为这些安全性问题是由第三方产品中的错误配置或缺陷造成的。

综合主要的原因包括但不限于以下三个方面。

程序方面

  • 未对用户输入正确执行危险字符清理;
  • Cookie和Session使用时安全性考虑不足;
  • HTML注释中或Hidden form包含敏感信息;
  • 提供给用户的错误信息包含敏感信息;
  • 程序员在 Web 页面上的调试信息等没有及时删除。
  • Web 应用程序编程或配置不安全;

配置方面 

  • 在Web目录中留下的冗余文件没有及时清理;
  • Web服务器或应用程序服务器是以不安全的方式配置的。
  • 安全规范文档不够完善,开发人员的培训不足;
  • 开发人员的安全相关经验和安全意识不足。

对于这些问题的解决方法-——技术之外

对于安全问题本身的解决可能只能case by case ,但为了预防更多潜在问题的引入,技术之外方面的改善也不容忽视:

1. 对于开发人员在项目初期即进行安全开发的培训,强化安全意识。

2. 建立用于共享安全经验的平台,将经验形成Checklist作为安全指南文档。

3. 将成熟的代码成果提炼出公共安全模块以备后用。

本次改善之后总结出一些常用基本安全原则供大家参考,见“非官方不完整网站开发安全原则”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_844004.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一些国内外文献检索与免费下载的网站

学会尊重他人的劳动成果-转载来源https://blog.csdn.net/weixin_43795921/article/details/100169662?utm_sourceapp 点击即可打开链接&#xff1a; 1.SCI-Hub 2.CiteSeerX 3.arXiv.org 4.FINDARTICLES 5.scinapse&#xff08;用于检索比较好用&#xff0c;下载不了的在SC…

从运维角度看中大型网站架构的演变之路

一个成熟的网站架构并不是一开始设计就具备高可用、高伸缩、高性能等特性的&#xff0c;它是随着用户量和业务线不断增加&#xff0c;基础架构才逐渐健壮的。在发展初期&#xff0c;一般都是从0到1&#xff0c;不会一上来就整一些大而全的架构&#xff0c;也很少人这么任性。 …

查找会议论文的网站

http://conf.cnki.net/advanceSearch.aspx http://www.allconfs.org/list.asp

python2、python3同时存在,pip安装包后,显示No module named的问题(附加国内镜像网站)

python2、python3同时存在&#xff0c;pip安装包后&#xff0c;显示No module的问题&#xff08;附加国内镜像网站&#xff09; 在电脑中同时安装python2、python3的情况下&#xff0c;明明已经pip相对应的包后&#xff0c;但是使用import相应包时python2可以正常导入&#xf…

免费GIS数据下载网站推荐

&#xfeff;&#xfeff;数据是 GIS 的核心&#xff0c;然而你是不是还在为找不到数据而苦恼呢&#xff1f;本期我们为你挑选了国外十个免费的数据下载网站&#xff0c;赶快去看看吧&#xff01; 1、Natural Earth Data 网址&#xff1a;http://www.naturalearthdata.com/ N…

大型网站系统与JAVA中间件实践 学习总结 一

大型网站系统与JAVA中间件实践 学习总计 一前言一、用 JAVA技术和单机来构建的网站二、将单机系统设定为交易网站三、单机负载警告&#xff0c;数据库与应用分离四、应用服务器负载告警&#xff0c;如何让应用服务器走向集群访问选择问题---引入负载均衡解决session问题Session…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置&#xff0c;即可设置。 网站基本信息是贯穿显示在整个网站上的&#xff0c;且其他SEO相关设置也会引用到&#xff0c;主要包含网站名称、关键词和网站描述等设置。 关闭网站&#xff1a;默认选择“否”&#xff0c;如果维护&#xff0c;备案或其…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置&#xff0c;即可设置。 网站基本信息是贯穿显示在整个网站上的&#xff0c;且其他SEO相关设置也会引用到&#xff0c;主要包含网站名称、关键词和网站描述等设置。 关闭网站&#xff1a;默认选择“否”&#xff0c;如果维护&#xff0c;备案或其…

eyoucms 到底什么是网站根目录?

对于站长和互联网技术人员而言&#xff0c;网站根目录是一个很常见的概念&#xff0c;弄不明白到底哪一个目录才是根目录的新手也并不少见&#xff0c;今天益吾库就跟大家分享一下到底什么是网站根目录的相关知识。 什么是根目录 顾名思义&#xff0c;根就像树根一样&#xf…

setoolkit克隆网站并抓取账号密码

文章目录setoolkit简介setoolkit克隆站点遇到的问题setoolkit简介 社会工程师工具包&#xff08;The Social-Engineer Toolkit&#xff09;是一个为社会工程设计的开源渗透测试框架。SET有许多自定义攻击向量&#xff0c;允许您快速地进行可信的攻击。SET是TrustedSec有限责任…

eyoucms 网站导航怎么设计?

通常用户第一眼进入网站看到的是首页的图片&#xff0c;其次就是网站的主导航&#xff0c;因此主导航对网站来说至关重要&#xff0c;不仅能够起到很好的指引作用&#xff0c;一个有魅力的导航还能留住用户浏览更多的信息&#xff0c;而且带给用户良好的体验。&#xff0c;那么…

网站的组成部分有什么?

网站的组成分为网站域名、网站空间和网站程序&#xff0c;接下来我们分别了解一下这三个部分。 网站域名相关知识&#xff1a; 1、eyoucms.com为顶级域名&#xff0c;bbs.eyoucms.com为二级域名&#xff0c;拥有顶级域名所有权及管理权便可以自行分配二级域名&#xff0c;如ww…

eyoucms 如何判断网站的SEO优化情况

网站程序自身的SEO优化质量可以通过以下几个方面加以判断&#xff1a; 1、网页标题 &#xff08;title部分&#xff09;是否体现了全站的关键词&#xff0c;每个页面的关键词是否不同&#xff0c;一般栏目应该以栏目名称为主要关键词&#xff0c;内容页面以内容标题为关键词…

eyoucms 怎么使用网站地图?

网站无论大小&#xff0c;单独的网站地图页面都是必需的&#xff0c;通过网站地图&#xff0c;不仅用户可以对网站的所有内容一幕了然&#xff0c;搜索引擎也可以跟踪链接爬行到网站的主要部分。一般来说&#xff0c;网站地图有两种形式&#xff1a; 一种是HTML&#xff0c;…

eyoucms 网站描述怎么写?

用户在搜索关键词的时候&#xff0c;首先呈现给用户的是title和描述部分&#xff0c;想要进一步吸引用户点击&#xff0c;得到用户的青睐&#xff0c;醒目的描述将发挥重要的作用&#xff0c;因为标题的长度有限&#xff0c;并不能显示完全&#xff0c;而描述是概括一个网页内容…

eyoucms 如何提高企业网站文章内容质量

无论什么类型的网站&#xff0c;文章的高质量永远是放在靠前位的。文章的质量直接影响到网站的权重和网络排名。所以提高文章质量也就成了每一个企业网站优化的重中之重。那么我们要怎么才能提高质量呢&#xff1f;下面有几个小建议。 首先&#xff0c;原创内容永远是受欢迎的。…

eyoucms 分享一下网站内容建设技巧有哪些

网站制作中有句话“内容为王”。由此可以得出网站的内容对网站的制作是多么重要&#xff0c;网站内容是网站的核心&#xff0c;也是网站进行SEO优化的重点。所以&#xff0c;不管是网站的制作还是网站的SEO优化&#xff0c;网站内容都要做好&#xff0c;并且要更新一些有特色的…

eyoucms移动互联网时代 建设移动网站策划该怎么做?

从现在网站推广的力度以及方式来说&#xff0c;好像移动网站要比pc电脑网站更加具有优势一些&#xff0c;现在可以说是移动端设备的天下了&#xff0c;自然移动网站也变得更加受人们欢迎&#xff0c;但是移动网站的发展速度也是非常迅速的&#xff0c;稍不留神&#xff0c;就被…

什么是响应式网站 为什么会受到客户的喜欢

为了能够给不同的用户设计出不同的网站类型&#xff0c;业内人士在网站建设的设计上投入了众多的精力。其中&#xff0c;响应式网站设计的成功便是投入精力后优秀的产出品之一。那么&#xff0c;到底什么是响应式网站呢&#xff1f;它的哪些优势能让客户对它如此的依赖呢&#…