简单web安全入门

基本原则

Secure by default

Secure by default, in software, means that the default configuration settings are the most secure settings possible……

《白帽子讲Web安全》将其总结了下面两条:

  1. 黑名单与白名单

尽量使用白名单。

  1. 最小权限原则

The principle of least privillege requires that in a particular abstraction layer of a computing environment, every module(such as a process, a user, or a program, depending on the subject) must be able to access only the information and resources that are necessary for its legitimate purpose.

简单地说,就是系统只授予主体必要的权限,不要过度授权。如:1)数据库授权,一般应用程序只需要针对数据进行增删改查,而不需要对表结构进行操作。2)在Linux操作系统中,正常情况只需要使用普通账户登录。

纵深防御原则

安全是一个整体。纵深防御,其实就是:这个“整体”的不同层次需要实施不同的安全方案,需要在正确的地方做正确的事

数据与代码分离原则

“注入”攻击(如XSS、CRLF注入、SQL注入、缓冲区溢出)产生的原因,就是代码和数据没有分离开,而把“数据”当成“代码”执行了。

不可预测性原则

不可预测性,能有效地对抗基于篡改、伪造的攻击。如:1)操作系统为了提高缓冲区溢出攻击的门槛,使用ASLR让进程的栈基址随机变化。2)使用token防止CSRF攻击。

同源策略

In computing, the same-origin policy is an important concept in the web application security model.

同源策略是整个Web安全的基础。

所谓同源,就是协议相同、域名相同、端口相同
主要表现为:

  1. 无法读取/写入不同源的页面的cookie、localstorage和indexDB。
  2. 无法操作不同源的页面的DOM。
  3. 默认情况下,不能发送不同源的ajax请求(当然有特殊办法)。

XSS攻击

  • XSS攻击简介

Cross-site scripting(XSS) is a type of computer security vulnerability typically found in web applications. XSS enables attacker to inject client-side scripts into web pages viewed by other users.

XSS攻击,通常指通过”HTML注入”篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

虽然叫“跨站脚本攻击”,但这是历史原因,现在这种攻击不一定和“跨站”有关。

XSS防御

  • 输入输出

    • 对用户输入的标签进行过滤/encode。但是这样做容易误伤,因为有些场景就是需要用户输入标签。
    • 一般建议在将数据添加到DOM的时候对数据进行HtmlEncode或JavaScriptEncode,以预防XSS攻击。
  • HttpOnly

    • 页面被XSS攻击之后,最常见的攻击方式就是“cookie劫持”——用js读取用户的cookie,并将其发送到攻击者的后台,实现盗取用户的登录态的目的。
    • 这里可以将比较敏感、重要的cookie设置为HttpOnly,js就无法获取被设置为HttpOnly的cookie。

CSRF

Cross-site request forgery, also known as one-click attack or session riding...is a type of malicious exploit of a website where unauthorized commands are transmitted from a user that the website trusts.

跨站请求伪造,可以这么理解:攻击者在用户不知情的情况下,利用cookie发送的特点,以用户的名义发送恶意请求

CSRF的本质原因是:请求是可伪造/可预测的

假如请求是无法伪造/无法预测的,那么攻击者自然就无法替用户伪造并发起请求:用户第一次访问页面的时候,后台生成一个token,存到session和cookie里面。后续用户发起请求的时候,都在表单中带上这个token,后台对token进行校验。

这里token是不可预测和不可伪造的。

SQL注入

SQL injection is a code injection technique, used to attack data-driven applications, in which nefarious SQL statements are inserted into an entry field for execution.

发生SQL注入的本质原因和XSS攻击一样,没有处理好代码与数据分离,把用户输入的数据当成代码运行了。

防止SQL注入:

  1. 使用参数化查询:将SQL语句和参数分开提交给DB,而不是自己拼完整的字符串,这个需要库的支持。
  2. 小心地对输入字符串进行escape,如使用mysql_real_escape_string

CRLF注入

CRLF也是一种注入攻击,一般是指在http header注入CRLF这两个字符,导致改变了HTTP包的语义。

在将数据设置为http header的时候,要注意这个问题。防止攻击的办法也很简单,过滤CRLF这两个字符即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 1、不安全的随机数生成,在CSRF TOKEN生成、password reset token生成等,会造成toke...
    nightmare丿阅读 3,681评论 0 1
  • 攻击活动 SQL(结构化查询语言)注入 概述 一个SQL注入攻击包含了从应用客户端的输入数据中注入或嵌入的方式,一...
    夏夜星语阅读 907评论 0 0
  • http://www.91ri.org/tag/fuzz-bug 通常情况下,有三种方法被广泛用来防御CSRF攻击...
    jdyzm阅读 4,161评论 0 5
  •     前端安全一直是一个蛮严苛的问题,特别如果设计到money更是如此。了解前端安全,在平时的coding中主动...
    Johnson杰阅读 640评论 0 6
  • “纹身的都是坏人”这算是一个万年不变的偏见,深深扎在我们的心里,老少皆宜。 最近总看到那些段子,一个纹身的人怎么怎...
    O2想去北海道阅读 200评论 0 0