使用servlet从/WEB-INF/异步加载javascript:一般注意事项
loading javascript asynchronously from /WEB-INF/ using a servlet: general concern
我正在使用servlet在Java EE web应用程序中异步加载javascript文件。
js文件位于/WEB-INF/js/文件夹下。
工艺流程如下:
在index.jsp中:
<script src="/servlet/mainLoader.js">
servlet完成了从/WEB-INF/js/内部获取js文件的必要工作。
因此,基本上,我调用一个主js文件mainLoader.js,它本身会加载我的应用程序中的其余js文件。这种架构背后的原因是在js文件中隐藏一些关键信息,因此用户将无法浏览文件的路径并检查源代码
我有两个问题:
-这被认为是一种不好的做法吗
-目前,我正在本地(localhost)开发我的应用程序,当我转到生产模式时,这个js加载系统会引起问题吗?我的意思是,远程用户在不在本地主机上的情况下可以卸载js文件吗?
答案:
@BalusC让我意识到我选择的错误在哪里。我没有意识到这种JS抓取只适用于GET请求。我认为它可以使用POST,从而禁用servlet上的GET方法(这样就不能直接从url栏访问JS)
此外,@David所说的是真的,但我试图让阅读JS源代码变得不那么简单。
因此,我发现@Todd Chaffee是绝对正确的,吸取的教训是:
"1)默默无闻的安全是一种有记录的不良做法。"
您不能向用户隐藏JavaScript代码。即使通过脚本标记注入额外的代码,用户也可以在firebug等工具的帮助下获得代码。
如果你想保护代码,你应该看看"迷你程序"answers"代码混淆"。尽管如此,这不会保护密码等敏感数据。
两个问题的答案:
1) 默默无闻的安全是一种有案可稽的不良做法。
http://en.wikipedia.org/wiki/Security_through_obscurity
2) 远程用户必须能够下载浏览器使用的任何js文件。所以他们肯定可以访问你的脚本。我不认为脚本存在于本地文件系统中,并从本地主机转移到生产环境中有问题,但为什么不测试一下呢?
根据最初的问题:
-这被认为是一种糟糕的做法吗
这不一定是一种糟糕的做法。这显然没有道理。为什么要接管servlet容器的内置默认servlet的工作?
-目前我正在本地开发我的应用程序(localhost),当我转到生产模式时,这个js加载系统会引起问题吗?我的意思是,远程用户在不在本地主机上的情况下可以卸载js文件吗
这表明您认为Java代码运行在Web浏览器(客户端)中。这种假设是错误的。Java代码在Web服务器(服务器端)上运行。只要你不改变相对URL,它就会同样有效。
根据评论:
我没有意识到的是,这种JS抓取目前只适用于GET请求。由于它不适用于POST(我本来打算这么做),所以是的,用户可以通过url栏访问JS
对于"中间人"攻击,POST绝对不比GET更"安全"。POST仅用于非幂等请求,而GET用于幂等请求。防止HTTP请求受到"中间人"攻击的唯一方法是使用HTTPS。
- 如何隐藏空<span>在IE中使用javascript.(注意,在其他浏览器中工作正常)
- 我创建了一个Javascript待办事项列表,但想知道如何在浏览器刷新后保留这些帖子
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- Javascript待办事项列表-我的代码中有什么错误
- JS 字段验证 - 循环遍历对象,每个字段有三个数据注意事项
- 将消息从主 http 页面发送到 https iframe 时的安全注意事项
- 使用 EcmaScript 中的 WeakMap 时,时序问题注意事项
- 如何在 JavaScript 中创建待办事项列表
- 注意:将数组从 php 转换为 javascript 时出现数组到字符串的转换错误
- 我注意到我倾向于在JavaScript / jQuery中创建DOM对象并附加它们.这是可以的还是我应该在 HTML 中
- Javascript 数组不会注意到文件夹中的新图像
- 获取通过ajax加载的iframe的HTML(请注意,iframe包含一个需要javascript加载的网页)
- 使用“new Function(..) ”的安全注意事项“(在渲染期间,表达式来自我的 Javascript 源代码)
- 注意事项将C#字符串编码为Javascript字符串
- 使用servlet从/WEB-INF/异步加载javascript:一般注意事项
- 我刚注意到JavaScript测试中的一个缺陷.我需要帮助来修理它
- Node.js SIGTERM实现注意事项
- 测试jQuery插件的资源/技术/注意事项
- 使用每个功能时的注意事项
- 使用javascript动态创建表单需要注意哪些事项