让你的web应用更安全
- X-Frame-Options
- Cookie of secure and httpOnly
设置X-Frame-Options
https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
X-Frame-Options 主要是为了防止点击劫持(clickjacking)点击劫持(clickjacking)是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段。X-Frame-Options HTTP 头部字段用来指示传输的资源是否可以被包含在 或
DENY表明网页内容不可以被嵌入到任何frame中
SAMEORIGIN同源策略,声明网页内容可以被同一域下面的frame嵌入,但不能被不在同一域下面的frame嵌入.同源: 协议,域名和端口全部相同,即使是ip与域名对应,也认为是不同域下,下面说明了具体的情况,与: http://www.example.com/dir/page.html对比:
Compared URL | Outcome | Reason |
---|---|---|
http://www.example.com/dir/page2.html | 同源 | 协议主机端口相同 |
http://www.example.com/dir2/other.html | 同源 | 协议主机端口相同 |
http://username:password@www.example.com/dir2/other.html | 同源 | 协议主机端口相同 |
http://www.example.com:81/dir/other.html | 不同源 | 端口不同 |
https://www.example.com/dir/other.html | 不同源 | 协议不同 |
http://en.example.com/dir/other.html | 不同源 | 主机名不同 |
http://example.com/dir/other.html | 不同源 | 主机不同,必须完全匹配 |
http://v2.www.example.com/dir/other.html | 不同源 | 主机不同,必须完全匹配 |
http://www.example.com:80/dir/other.html | Depends | Port explicit. Depends on implementation in browser |
- ALLOW-FROM指定具体的来源
服务器配置
Apache
添加站点配置:
Header always append X-Frame-Options SAMEORIGIN
Nginx
添加 http , server 或者 location 配置
add_header X-Frame-Options SAMEORIGIN;
IIS
添加到站点的 Web.config
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ...</system.webServer>
HAProxy
添加到 frontend, listen, 或者 backend 配置中:
rspadd X-Frame-Options:\ SAMEORIGIN
更安全的Cookie
Cookie 是浏览器储存在客户端的小的文本文件,用于客户端与服务器之间互传.Web服务器通过指定 http header 的 Set-Cookie, 其结构如下:
Set-Cookie: name=value[; expires=date][; domain=domain][; path=path][; secure][; httpOnly]
可以看到,Cookie主要包含一下几个字段:
- name
- value
- expire
- domain
- path
- secure
- httpOnly
这里主要讲secure 和 httpOnly
httpOnly标识
用来告诉浏览器不能通过JavaScript的 document.cookie 来访问 cookie, 目的是避免 跨站脚本攻击 (XSS)
secure标识
强制应用通过Https来传输 Cookie
PHP Yii2中设置Cookie的 httpOnly 和 secure
设置 _csrf
Yii2中的 Cookie yii\web\Cookie默认是 httpOnly的,
class Cookie extends \yii\base\Object{ public $name; public $value = ''; public $domain = ''; public $expire = 0; public $path = '/'; public $secure = false; public $httpOnly = true;}
使用 = Html::csrfMetaTags() ?> 就会生成一个 name=_csrf 的 Cookie, 默认是 httpOnly, 通过注入request来改变:
在 config/main.php 中
... 'components' => [ 'request' => [ 'csrfCookie' => [ 'httpOnly' => true, 'secure' => SECURE_COOKIE, ], ], ... ] ...
注入 csrfCookie 的 httpOnly 和 secure 属性值
生成secure的 Cookie
$cookies = Yii::$app->response->cookies;$cookies->add(new Cookie([ 'name' => 'accesstoken', 'value' => $accessToken, 'expire' => time() + Token::EXPIRE_TIME, 'secure' => SECURE_COOKIE ]));
注意更新 Cookie 的时候也需要更新 secure 属性
$cookies = Yii::$app->request->cookies;if (($cookie = $cookies->get('accesstoken')) !== null) { $cookie->secure = SECURE_COOKIE; // 这里很重要, 不然就会丢失 $cookie->expire = time() + Token::EXPIRE_TIME; Yii::$app->response->cookies->add($cookie);}

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.
