跨域访问控制
跨域访问
为什么浏览器禁止跨域访问
不安全,容易出现csrf攻击!
如果黑客控制的网站b在响应头里添加了让客户端去访问网站a的恶意信息,就会出现csrf攻击
nginx如何配置跨域访问
add_header语法
syntax:add_header name value [always];
default:—
context:http, server, location, if in location
语法解释:
add_header name value [always];
name 表示响应头返回的key
value 表示响应头返回的key对应的value
add_header跨域配置
location ~ .*\.(htm|html)$ { add_header access-control-allow-origin *; add_header access-control-allow-methods get,post,put,delete,options; root /opt/app/code; }
防盗链
防盗链目的
防止资源被盗用。
防止非正常用户访问,占用网站资源,影响网站性能,势必影响正常用户访问
基于http_referer防盗链配置模块
ngx_http_referer_module模块用于阻止对“referer”头字段中具有无效值的请求访问站点。
举例
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.; if ($invalid_referer) { return 403; }
referer_hash_bucket_size语法
syntax: referer_hash_bucket_size size;
default: referer_hash_bucket_size 64;
context: server, location
语法解释:
referer_hash_bucket_size size;表示设置有效引用散列表的存储区大小。
referer_hash_max_size 语法
syntax: referer_hash_max_size size;
default: referer_hash_max_size 2048;
context: server, location
语法解释:
referer_hash_max_size size;表示设置有效引用者哈希表的最大大小。
valid_referers语法
syntax: valid_referers none | blocked | server_names | string ...;
default: —
context: server, location
语法解释:
valid_referers none | blocked | server_names | string ...;
none表示请求标头中缺少“referer”字段;
blocked表示“referer”字段出现在请求标头中,但其值已被防火墙或代理服务器删除; 这些值是不以“http://”或“https://”开头的字符串;
server_names 表示“referer”请求头字段包含一个服务器名称;
string 表示定义服务器名称和可选的uri前缀。 服务器名称的开头或结尾可以包含“*”。 在检查期间,“referer”字段中的服务器端口被忽略;
防盗链小案例
touch test_referer.html (在 /op/app/code 目录下)
配置防盗链如果不是从 www.zhangbiao.com 域名转来的就会报错
location ~ .*\.(jpg|gif|png)$ { valid_referers none blocked www.zhangbiao.com; if ($invalid_referer) { return 403; } root /opt/app/code/images; } location ~ /test_refer.html { root /opt/app/code; }
访问
http://192.168.1.112/test_refer.html
访问
http://www.zhangbiao.com/test_refer.html
允许其他网站访问自己网站资源配置
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!