- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章常见的网站安全问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
尽管你的网站用了很多高大上的技术,但是如果网站的安全性不足,无法保护网站的数据,甚至成为恶意程序的寄生温床,那前面堆砌了再多的美好也都成了枉然.
SQL注入 。
在众多安全性漏洞中,SQL 注入绝对是最严重但也是最好处理的一种安全漏洞。在数据库执行查询句时,如果将恶意用户给出的参数直接拼接在查询句上,就有可能发生.
举个例子,假设原本某网站登录验证的查询句长这样:
而恶意用户输入的参数为:
由于代码中是直接将参数与查询句做字串做的拼接,所以 SQL 就成为了这样:
这样一来,账号密码就形同虚设,甚至可以拿到整个数据库的结构(SELECT * FROM sys.tables)、任意修改、查询数据,整个网站的数据就全部泄露了.
不过解决方法也很简单,只要通过参数化查询来避免直接将参数与查询句拼接,并进行适当的输入检查、插入转义字符、严格设定程序权限,就能够有效避免 SQL 注入了.
XSS 。
XSS(跨站攻击)也叫JavaScript 注入,是现代网站最频繁出现的问题之一,它指的是网站被恶意用户植入了其他代码,通常发生在网站将用户输入的内容直接放到网站内容时。例如论坛、留言板等可以输入任意文字的网站,恶意用户如果写入一小段 <script>,并且前、后端都没有针对输入内容做字符转换和过滤处理,直接把用户输入的字串作为页面内容的话,就有可能遭到 XSS.
常见的 XSS 有几个类型:将恶意代码写入数据库,当数据被读取出来时就会执行的储存型 XSS;将用户输入的内容直接带回页面上的反射型 XSS;以及利用 DOM 的特性,各种花式执行恶意代码的DOM-based 型 XSS.
储存型及反射型都很好理解,DOM-based 型就非常有意思了;可以参考OSWAP 整理的XSS Filter Evasion Cheat Sheet[1],绝大多数的 XSS 方式,都是通过各个元素的 background-image 属性或者元素上的各种事件回调来实现;其中特别值得注意的是 SVG,由于 SVG 中可以写入任意 HTML,还可以加上 onload 事件,如果把 SVG 当成普通图片处理,直接作为网站内容使用,如果遇到恶意用户的话,后果不堪设想。所以在上线上传图片功能时,务必要把 SVG 过滤掉.
避免 XSS 的方法其实也很简单,只要在数据输入输出时做好字符转换,使恶意代码不被执行,而是被解析成字符就可以了.
CSRF 。
CSRF(跨站请求伪造)是一种利用 Cookie 及 Session 认证机制进行攻击的手段;由于 Session 认证的其实不是用户本人,而是浏览器,那么只要通过网页DOM 元素可以跨域的机制,对已经得到认证的网站发出请求,就可以假冒用户,从而拿到敏感信息.
例如某家银行的转账 API 的URL 是这样的:
而恶意用户如果在网站中塞进一个 的话:
当不知情的用户浏览到攻击者的网站时, 会自动发出这个请求,如果用户登录银行的 Session 尚未过期,那么这个请求很可能就会被银行接受,最后会在用户本人不知情的情况下“被”转帐.
这种攻击方式可以与前面所说的 XSS 是相辅相成,例如在没有防范 XSS 的论坛网站中植入 ,那么其 src 属性就应该是获取敏感信息的 API URL.
解决方法主要有以下几种:
JSON 劫持 。
JSON 劫持是利用现代网站前后端通过 API 进行数据交换的特性,只要能获得使用者权限,并调用获取资料的 API,再加上改写原生的 JavaScript 对象,就可以窃取用户的敏感信息.
获得权限的部分于 CSRF 相同,通过 <script> 可以跨域的特性直接使用浏览器用户的 Cookie;攻击者只需要在网页上通过 <script> 调用获取数据的 API 完成对数据的窃取.
例如:
当回传的数据中含有 user 属性时,由于 Setter 通过 Object.prototype.__defineSetter__ 改写了,user 中的值会被全部读取.
然而 Object.prototype.__defineSetter__ 可以修改原生对象所造成的问题,早已经在 ES4 中就被修复了,JSON 劫持也因此销声匿迹,但是从 ES6 开始又添加了 Proxy,使 JSON 劫持又再次成为可能:
看起来很恐怖,那么该如何解决呢?除了前面所说的 CSRF Token 外,许多大公司还采用了另一种有趣的解决方式。即 API 的响应内容开头为 for (;;);,这也是利用 了<script> 引入的 JavaScript 会立即执行的特性,把攻击者的网站卡死在循环里.
总结 。
除了文中提到的四种常见的网站安全漏洞外,一个网站还有很多细节需要考虑,例如不要用明码存储密码等敏感信息,针对来源 IP 做流量限制防止 DOS 等等。所以在进行网站开发时要保持安全意识,尽可能做好基本的防护措施.
原文链接:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMDY0NA==&mid=2247503874&idx=1&sn=9f23e3f5e29cd12f167ddd4f7462cb71&chksm=eb6bf559dc1c7c4f1ef8efab781c34df153076ac22988e3ea778d31b60ffd72f8525f6e357f1&mpshare=1& 。
最后此篇关于常见的网站安全问题的文章就讲到这里了,如果你想了解更多关于常见的网站安全问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有这个网站,这个特定页面是安全的,但是当它回发时,它回发到一个不安全的页面。如何解决? 我正在使用 ASP.NET 向导。我有这个页面 - checkout.aspx,页面包含这个控件 checko
我有 2 个 azure 网站 - 两个独立的项目 我现在有 2 个网址: myazurewebsite.azurewebsites.net myazureblog.azurewebsites.net
我有 2 个 azure 网站 - 两个独立的项目 我现在有 2 个网址: myazurewebsite.azurewebsites.net myazureblog.azurewebsites.net
环境: 旧网站: React 托管在 Heroku URL( http://sameurl.com ) 新网站: Java 托管在 Heroku URL ( http://sameurl.com )
我已在 Windows Azure 上注册了一个测试帐户来对其进行测试。我构建了一个 Hello world ASP.NET Web 应用程序 + 数据库只是为了测试。 我安装了 Visual Stu
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
这个问题在这里已经有了答案: Software keyboard resizes background image on Android (16 个答案) 关闭 8 年前。 我有一个类似的问题:So
这个问题似乎很常见,但我真的无法根据现有答案解决问题。 我有一个简单的 maven 项目,没有任何复杂的部署配置等,并且想在点击“mvn site”时生成一个 Maven CheckStyle 报告。
有没有人看过有关何时进行横向扩展与纵向扩展的最佳选择的任何分析或信息。什么时候一个比另一个更有意义。 目前,在标准模式和基本模式下,2 个小型实例的费用与 1 个中型实例的费用相同。 拥有 2 个小型
有没有办法找到 azure 网站何时停止? (我通过门户网站停止了网站,但我不记得是什么时候......) 我正在寻找一些日志,但没有找到任何有用的内容。 谢谢。 最佳答案 您拥有的最接近的是 azu
我目前在 Azure VM 的 IIS 中拥有一个网站。我已将该站点复制到 2 个可用区域中的 2 个虚拟机上。 这可以保护网站免遭停机。 我需要为高负载时刻实现一些可扩展性。这似乎就是创建音阶集的目
我有一个托管在 Azure 上的网站 ( http://mike-ward.azurewebsites.net/ )。我从 Azure 门户设置了一个指向(引用?)我的网站的 Azure CDN。根据
我有一个 Azure 网站(不是 Web 角色),有 2 个槽:生产和暂存。 我只想为生产插槽启用 CDN,而不是为登台启用,问题是我找不到识别主机插槽的方法。 RoleEnvironment 不可用
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 4年前关
我们正在考虑将一些网站从 Azure 云服务迁移到 Azure 网站(事情似乎就是这样进行的)。显然,我们被明确告知云服务不会保留文件系统状态,因为它们会在机器故障时重新部署。 我假设网站是基于 Bl
我有一个 Azure 网站,需要使用在 VM 上运行的 Elasticsearch 服务。 虽然我需要能够锁定对 Elasticsearch 的访问,以便只有 Azure 网站可以访问它,但我似乎无法
我有一个 azure 网站,位于 yis3.azurewebsites.net - 我已将其提升为“共享”网站,以便我可以使用自定义域。我拥有从 123-reg.co.uk 购买的域名 yorkshi
我正在使用 abcPDF 动态创建 PDF。 我想保存这些 PDF,以便客户随时检索。最简单的方法(也是我现在在当前服务器上所做的方法)是将完成的 PDF 保存到文件系统。 看来我一直坚持使用 blo
我们正在尝试了解 Windows Azure 管理 API 为 Azure 网站(而非 Webroles)返回的监控数据的复杂性 例如,下图描述了为 CPUTime 检索的数据点。它似乎表明,在晚上
看起来真的很愚蠢,因为我找不到它: 门户网站似乎不太直观,我如何为一个“网站”付费并在其中运行最多 500 个网站?我想当我通过单击左下角的加号添加“网站”时,我添加了整个虚拟机而不是子站点。如何仅添
我是一名优秀的程序员,十分优秀!