gpt4 book ai didi

Java:安全异常 - 非法 url 重定向

转载 作者:行者123 更新时间:2023-11-30 05:51:30 30 4
gpt4 key购买 nike

有没有人遇到过这个?让小程序工作给我带来了很多麻烦。我认为它不起作用的原因是我程序中用于与服务器通信的套接字。但是,我不知道如何阻止它,谷歌也没有帮助。我无法得到异常,因为 google chrome 的 java 控制台没有输出错误,只是在单击错误的小程序后给我一个弹出窗口,说它出错了。如果需要代码,我会添加。提前致谢。

security:  --- parseCommandLine converted : -Djava.net.preferIPv4Stack=true
into:
[-Djava.net.preferIPv4Stack=true]
basic: Added progress listener: sun.plugin.util.ProgressMonitorAdapter@acf892
basic: Plugin2ClassLoader.addURL parent called for http://voidchar.com/Other/DatRLTest.jar
basic: Plugin2ClassLoader.addURL parent called for http://voidchar.com/Other/SharedClasses.jar
security: Blacklist revocation check is enabled
security: Trusted libraries list check is enabled
network: Cache entry found [url: http://voidchar.com/Other/DatRLTest.jar, version: null] prevalidated=false/0
cache: Resource http://voidchar.com/Other/DatRLTest.jar has expired.
network: Connecting http://voidchar.com/Other/DatRLTest.jar.pack.gz with proxy=DIRECT
network: Connecting http://voidchar.com:80/ with proxy=DIRECT
basic: exception: illegal URL redirect.
java.lang.SecurityException: illegal URL redirect
at com.sun.deploy.net.HttpUtils.followRedirects(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.checkUpdateAvailable(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.isUpdateAvailable(Unknown Source)
at com.sun.deploy.cache.DeployCacheHandler.get(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack.downloadJAR(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack.access$000(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)
at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)
at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$1000(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ignored exception: java.lang.SecurityException: illegal URL redirect
basic: Dialog type is not candidate for embedding
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@acf892
basic: Loading Java Applet Failed...
security: Accessing keys and certificate in Mozilla user profile: null
security: Reset deny session certificate store

编辑:这是我用来加载小程序的 html 代码。


{applet width=800 height=800 archive='DatRLTest.jar,SharedClasses.jar' code='vc.voidwhisperer.datrl.main'}
{PARAM name="java_arguments" value="-Djava.net.preferIPv4Stack=true"}
{/applet}

小于号和大于号被替换了,因为它不喜欢我尝试把它们放在一起。

编辑 #2:我已经对 jar 进行了自签名,但这种情况仍在发生。我还没有弄清楚如何解决这个问题..

最终编辑:经过数小时的工作,我终于找到了解决方案,感谢 irc channel 中的一位 friend 。以下是修复方法的一般要点:

  • 如果您查看输出的特定行:network: Connecting http://voidchar.com/Other/DatRLTest.jar.pack.gz使用 proxy=DIRECT。
  • 在查找该文件时它不存在。
  • 对文件类型做了一些研究,它是一个 pack200 jar,可以使用 jar 制作,然后对其执行以下操作:打开 cmd,然后键入“pack200 example.jar.pack.gz [JarLocation]”。
  • 现在,将 example.jar 替换为您的 jar 文件的名称,但将 .pack.gz 保留在那里。
  • 现在,将该文件上传到与小程序相同的目录,并尝试再次加载小程序。

注意:确保小程序已签名!!希望这能帮助其他人解决我遇到的问题。

最佳答案

您的小程序违反了“同源”限制,这是默认的小程序安全限制,旨在保护用户免受恶意小程序的侵害。

参见 this blog post了解限制的解释以及强制执行的原因。


你能做什么?最好的办法是重新设计您的小程序和/或服务,以便完全删除重定向,或者将其重定向到不违反限制的 URL。如果那不是一个选项,您将需要使您的小程序成为“受信任的小程序”;例如见this tutorial了解问题。


更新

让小程序成为受信任的小程序我错了。它不会帮助。我查看了 OpenJDK 源代码( herehere ),似乎无论安全策略如何,都会执行“同源”安全检查。 (查找引发该消息异常的代码...)

因此,您唯一的选择是从与链接到它的网页相同的主机和端口提供小程序。换句话说,不要违反“同源”规则。

关于Java:安全异常 - 非法 url 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12648798/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com