假设情况:前端替换函数
Hypothetical situation: front end replacing function
有没有可能出现这种情况?我问这个是因为有人告诉我你声明的函数可以在客户端被覆盖,所以他们想将函数及其功能移动到后端...
您在 javascript 中声明了一个 const 函数(在 javascript 文件中)。您在客户端使用该功能呈现您的页面(使用 node.js/react.js/etc.)。客户端是否有可能覆盖客户端的函数,从而使您的 Web 应用程序调用其他函数/将您重定向到一些不需要的 destination/url?
嗯,是的。用户可以在浏览器中自由修改任何内容 运行。您可以打开 Chrome 的开发工具并在页面上更改您想要的任何内容。当然那只是在他们的浏览器中。
在浏览器中完成的任何验证都应在服务器上进行验证。 JavaScript 验证应该只是为了方便用户。任何登录信息都应仅以一种方式发送,客户端->服务器。如果用户想要更改 javascript 生成的 link,那是他们的选择,如果他们真的想要,他们可以更改服务器上生成的 link。
您是否担心有人使用开发工具更改您的代码,或者有人插入恶意脚本?
很难保护自己免受使用开发人员工具潜入您的代码的人的侵害,因为这些工具非常复杂。请记住,他们所做的更改仅代表他们应用,只要他们保持选项卡打开且不刷新页面即可。这不会对他人造成危险。如果您不喜欢别人阅读您的代码,运行 在将其放到服务器上之前先对其进行缩小和模糊处理。
如果您担心恶意代码,尽可能少地向全局名称空间公开始终是个好主意。这是您可以采取的简单措施。
这个例子很容易被脚本覆盖:
var foo = 'bar';
function doSomething() {
console.log(foo);
}
// evil script
doSomething = function () {
window.location = 'http://evil.com'
}
但是通过将您的代码包装在 IEFE 中,您可以更难从外部覆盖您的功能:
(function() { // use an IEFE to wrap your code here
var foo = 'bar';
function doSomething() {
console.log(foo);
}
)();
// evil script
doSomething = function () { // this function will not be called in your code
window.location = 'http://evil.com'
}
有没有可能出现这种情况?我问这个是因为有人告诉我你声明的函数可以在客户端被覆盖,所以他们想将函数及其功能移动到后端...
您在 javascript 中声明了一个 const 函数(在 javascript 文件中)。您在客户端使用该功能呈现您的页面(使用 node.js/react.js/etc.)。客户端是否有可能覆盖客户端的函数,从而使您的 Web 应用程序调用其他函数/将您重定向到一些不需要的 destination/url?
嗯,是的。用户可以在浏览器中自由修改任何内容 运行。您可以打开 Chrome 的开发工具并在页面上更改您想要的任何内容。当然那只是在他们的浏览器中。
在浏览器中完成的任何验证都应在服务器上进行验证。 JavaScript 验证应该只是为了方便用户。任何登录信息都应仅以一种方式发送,客户端->服务器。如果用户想要更改 javascript 生成的 link,那是他们的选择,如果他们真的想要,他们可以更改服务器上生成的 link。
您是否担心有人使用开发工具更改您的代码,或者有人插入恶意脚本?
很难保护自己免受使用开发人员工具潜入您的代码的人的侵害,因为这些工具非常复杂。请记住,他们所做的更改仅代表他们应用,只要他们保持选项卡打开且不刷新页面即可。这不会对他人造成危险。如果您不喜欢别人阅读您的代码,运行 在将其放到服务器上之前先对其进行缩小和模糊处理。
如果您担心恶意代码,尽可能少地向全局名称空间公开始终是个好主意。这是您可以采取的简单措施。
这个例子很容易被脚本覆盖:
var foo = 'bar';
function doSomething() {
console.log(foo);
}
// evil script
doSomething = function () {
window.location = 'http://evil.com'
}
但是通过将您的代码包装在 IEFE 中,您可以更难从外部覆盖您的功能:
(function() { // use an IEFE to wrap your code here
var foo = 'bar';
function doSomething() {
console.log(foo);
}
)();
// evil script
doSomething = function () { // this function will not be called in your code
window.location = 'http://evil.com'
}