js数据劫持的两个api

JavaScript012

js数据劫持的两个api,第1张

方法一:Object.defineProperty(target, key, desc)(vue2使用)

target: 目标对象

key: 将要操作的对象中的属性或名称

desc: 对象的描述

Object.defineProperty()用来访问一个对象的设置,允许精确地添加或修改对象的属性

劫持即是通过Object.defineProperty()对对象属性的set和get操作与检测

例子:

方法二:Proxy(target, handler)(vue3使用)

target: 目标对象

handler: 对象处理器

相比Object.defineProperty(),速度更快,更重要的是,vue3因为它可以响应数组变化了

JS劫持就是,在搜索引擎搜索你网站的关键词,你进如网站它会跳转到另外一个网站,或者有时候你看到网站的域名标题都是你的但是你打开快照却发现不是你的网站。

比如我们百度seo博客,我们看到搜索结果后面有风险两个字,这就说明你的网站被别人黑了。

当你点击进去,你会发现他并不会直接进入网站而是出现一个风险提示,你如果点击继续访问就会发现他会跳转到了别的网址。

如果遇到这种情况不用着急,我们输入先进入网站,如果进不去的就到网站后台源文件,查看其找到相对的代码然后删除即可,下图是我在源文件找到的JS劫持代码。

当然除了JS劫持代码,其他的代码也要一并删除,如果你的快照是劫持后的快照记得去百度反馈。

我们要预防JS劫持,首先要把我们网站的安全做好,买空间服务器最好是选择大的平台比如阿里云、腾讯云等,修改完网站后记得更换所有的账号密码,网站要记得时常备份,这样你的网站出现问题可以及时的覆盖还原。

js获取元素方法有:

1、getElementById :根据指定的 id 属性值得到对象。返回 id 属性值等于 sID 的第一个对象的引用。假如对应的为一组对象,则返回该组对象中的第一个。

2、getElementsByName:getElementsByName(name)该方法与 getElementById() 方法相似,但是它查询元素的 name 属性,而不是 id 属性。

另外,因为一个文档中的 name 属性可能不唯一(如 HTML 表单中的单选按钮通常具有相同的 name 属性),所以getElementsByName() 方法返回的是所有匹配元素组成的数组,而不是一个元素。

3、getElementsByTagName:getElementsByTagName() 方法会使用指定的标签名返回所有的元素(作为一个节点列表),这些元素是您在使用此方法时所处的元素的后代。

getElementsByTagName() 可被用于任何的 HTML 元素

如果把特殊字符串 "*" 传递给 getElementsByTagName() 方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。

传递给 getElementsByTagName() 方法的字符串可以不区分大小写。