Products
GG网络技术分享 2025-03-18 16:12 0
早在 PC 崛起之际,Web 从蹒跚学步一路走到了主导市场的地位,但是随着移动互联网时代的来临,业界曾有不少人猜测,“Web 应该被杀死,App 才是未来”。不过时间是检验真理的唯一标准,Web 非但未死于移动时代,更将于万物互联网时代迎来新的机遇。
如果我们暂时将浮华耀眼的黑科技搁置一边,过滤掉不可企及的未来主义想法,比如太空旅行、自动驾驶汽车等,那么你会发现,最受关注的技术将与Web开发有关。
Web和移动开发是一个每年都不断发展和创新的领域,它不仅改变了人们处理个人、社交和相关业务的方式,而且使软件开发人员更容易高效地创建解决方案。
因此,决策者必须熟悉新的趋势,以提高他们的知识,并在日益激烈的竞争中保持他们的地位。今天,我们将讨论改变软件开发行业的十大趋势。
Web开发是一个永远不会退出历史舞台的行业。事实上,随着新技术的到来,它将会随着时间不断地发展和更新,Web安全也是我们不可忽视的问题。
那么什么是web安全?
打开个网页随便浏览浏览,账号就被盗了,路由器就被黑了,可能么?非常有可能!
如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。
解决同源策略的方法:
存储型 XSS 攻击
利用漏洞提交恶意 JavaScript 代码,比如在input, textarea等所有可能输入文本信息的区域,输入<script src=\"http://恶意网站\"></script>等,提交后信息会存在服务器中,当用户再次打开网站请求到相应的数据,打开页面,恶意脚本就会将用户的 Cookie 信息等数据上传到黑客服务器。
反射型 XSS 攻击
用户将一段含有恶意代码的请求提交给 Web 服务器,Web 服务器接收到请求时,又将恶意代码反射给了浏览器端,这就是反射型 XSS 攻击。 在现实生活中,黑客经常会通过 QQ 群或者邮件等渠道诱导用户去点击这些恶意链接,所以对于一些链接我们一定要慎之又慎。
Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是和存储型 XSS 攻击不同的地方。
基于 DOM 的 XSS 攻击
基于 DOM 的 XSS 攻击是不牵涉到页面 Web 服务器的。它的特点是在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据。比如利用工具(如Burpsuite)扫描目标网站所有的网页并自动测试写好的注入脚本等。
预防策略
:
//1、meta
<meta http-equiv=\"Content-Security-Policy\" content=\"script-src \'self\'\">
//2、Http 头部
Content-Security-Policy:
script-src \'unsafe-inline\' \'unsafe-eval\' \'self\' *.54php.cn *.yunetidc.com *.baidu.com *.cnzz.com *.duoshuo.com *.jiathis.com;report-uri /error/csp
引诱用户打开黑客的网站,在黑客的网站中,利用用户的登录状态发起的跨站请求。
发起 CSRF 攻击的三个必要条件:
预防策略:
SameSite 选项通常有 Strict、Lax 和 None 三个值。
set-cookie: 1P_JAR=2019-10-20-06; expires=Tue, 19-Nov-2019 06:36:21 GMT; path=/; domain=.google.com; SameSite=none
在服务器端验证请求来源的站点,就是验证 HTTP 请求头中的 Origin 和 Referer 属性。Referer 是 HTTP 请求头中的一个字段,记录了该 HTTP 请求的来源地址,而O rigin 属性只包含了域名信息,并没有包含具体的 URL 路径。这是 Origin 和 Referer 的一个主要区别。
服务器的策略是优先判断 Origin,如果请求头中没有包含 Origin 属性,再根据实际情况判断是否使用 Referer 值。
CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。因此要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。
这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。
然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax 方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便。另外,对于没有进行 CSRF 防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,这样几乎是要重写整个网站,这代价无疑是不能接受的。
SQL注入
拼接 SQL 时未仔细过滤,黑客可提交畸形数据改变语义。比如查某个文章,提交了这样的数据id=-1 or 1=1等。1=1 永远是true,导致where语句永远是ture.那么查询的结果相当于整张表的内容,攻击者就达到了目的。或者,通过屏幕上的报错提示推测 SQL 语句等。
预防策略:
点击劫持
预防策略:
window.opener 安全问题
window.opener 表示打开当前窗体页面的的父窗体的是谁。例如,在 A 页面中,通过一个带有 target=\"_blank\" 的 a 标签打开了一个新的页面 B,那么在 B 页面里,window.opener 的值为 A 页面的 window 对象。
一般来说,打开同源(域名相同)的页面,不会有什么问题。但对于跨域的外部链接来说,存在一个被钓鱼的风险。比如你正在浏览购物网站,从当前网页打开了某个外部链接,在打开的外部页面,可以通过 window.opener.location 改写来源站点的地址。利用这一点,将来源站点改写到钓鱼站点页面上,例如跳转到伪造的高仿购物页面,当再回到购物页面的时候,是很难发现购物网站的地址已经被修改了的,这个时候你的账号就存在被钓鱼的可能了。
预防策略:
<a href=\"https://xxxx\" rel=\"noopener noreferrer\"> 外链 <a>
rel=noopener 规定禁止新页面传递源页面的地址,通过设置了此属性的链接打开的页面,其 window.opener 的值为 null。 2. 将外链替换为内部的跳转连接服务,跳转时先跳到内部地址,再由服务器 redirect 到外链。 3. 可以由 widow.open 打开外链。
服务器未校验上传的文件,致使黑客可以上传恶意脚本等方式。
预防策略:
参考资料
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。
最近博主发现wordpress给所有的外链都添加了“noopener noreferrer”属性,“noopener noreferrer”的意思是指链接“不要打开”、“不要追踪”让搜索引擎不要计入权重,所以说这个属性对我们网站影响还是挺大的。今天博主为大家带来了如何去掉这个属性的教程。
一、添加禁止自动添加代码
//WordPress 移除链接中的 rel=\"noopener\" 属性add_filter(\'tiny_mce_before_init\',\'tinymce_allow_unsafe_link_target\');
function tinymce_allow_unsafe_link_target( $mceInit ) {
$mceInit[\'allow_unsafe_link_target\']=true;
return $mceInit;
}
二、执行数据库清除操作
在数据在运行下方代码即可删除已经添加的属性。运行前请自行备份数据库,不排除存在风险。
UPDATE wp_posts SET post_content = REPLACE( post_content, \'noopener noreferrer\', \'\' )
Demand feedback