相关疑难解决方法(0)

Java安全:非法密钥大小或默认参数?

我之前曾问过一个关于这个问题的问题,但它没有得到正确的答案而且无处可去.

所以我已经澄清了关于这个问题的一些细节,我真的很想听听你如何解决这个问题或者我应该尝试什么的想法.

我在我的Linux服务器上安装了Java 1.6.0.12,下面的代码运行得非常完美.

String key = "av45k1pfb024xa3bl359vsb4esortvks74sksr5oy4s5serondry84jsrryuhsr5ys49y5seri5shrdliheuirdygliurguiy5ru";
try {
    Cipher c = Cipher.getInstance("ARCFOUR");

    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "ARCFOUR");
    c.init(Cipher.DECRYPT_MODE, secretKeySpec);

    return new String(c.doFinal(Hex.decodeHex(data.toCharArray())), "UTF-8");

} catch (InvalidKeyException e) {
    throw new CryptoException(e);
}
Run Code Online (Sandbox Code Playgroud)

今天我在我的服务器用户上安装了Java 1.6.0.26,当我尝试运行我的应用程序时,我得到以下异常.我的猜测是它与Java安装配置有关,因为它在第一个工作,但在更高版本中不起作用.

Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
    at my.package.Something.decode(RC4Decoder.java:25) ~[my.package.jar:na]
    ... 5 common frames omitted
Run Code Online (Sandbox Code Playgroud)

第25行是: c.init(Cipher.DECRYPT_MODE, secretKeySpec);

注意:
*服务器的1.6.0.12 …

java

394
推荐指数
10
解决办法
39万
查看次数

javax.faces.application.ViewExpiredException:无法恢复视图

我用容器管理的安全性编写了简单的应用程序.问题是当我登录并打开另一个我注销的页面时,然后我回到第一页,我点击任何链接等或刷新页面我得到这个例外.我想这是正常的(或者可能不是:))因为我退出了会话被破坏了.我该怎么做才能将用户重定向到例如index.xhtml或login.xhtml,并使他免于看到错误页面/消息?

换句话说,如何在我退出后自动将其他页面重定向到索引/登录页面?

这里是:

javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
    at filter.HttpHttpsFilter.doFilter(HttpHttpsFilter.java:66)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)

jsf logout jsf-2 viewexpiredexception

170
推荐指数
3
解决办法
24万
查看次数

JSF中的CSRF,XSS和SQL注入攻击防范

我有一个基于JSF的Web应用程序,MySQL作为DB.我已经实现了代码来防止我的应用程序中出现CSRF.

现在,由于我的底层框架是JSF,我想我不必处理XSS攻击,因为它已经被处理了UIComponent.我没有在任何视图页面中使用任何JavaScript.即使我使用,我真的需要实现代码来防止XSS攻击?

对于DB,我们在所有数据库交互中使用预准备语句和存储过程.

是否还需要处理其他任何事情以防止这3种常见攻击?我已经通过了OWASP网站和他们的备忘单.

我是否需要处理任何其他潜在的攻击媒介?

xss jsf sql-injection csrf owasp

54
推荐指数
2
解决办法
4万
查看次数

我是否有POST表格中的CSRF攻击风险,不需要用户登录?

我可能在这里完全是noob,但我仍然不确定CSRF(跨站点请求伪造)攻击到底是什么.那么让我们看看三种情况......

1)我有一个POST表单,用于编辑我的网站上的数据.我希望只有登录的用户才能编辑这些数据.

2)我有一个站点,登录的用户和访客都可以使用.该站点的某些部分仅供登录用户使用,但也有所有用户都可以使用的POST表单 - 匿名而非(例如标准联系表单).是否应该保护联系表格免受CSRF攻击?

3)我有一个完全没有身份验证系统的站点(好吧,也许这是不切实际的,所以假设它有一个管理站点,它与其余部分分开,管理部分得到了适当的保护).该站点的主要部分仅供匿名用户使用.是否需要保护其上的POST表格?

在1)的情况下,答案显然是肯定的.但是在2和3的情况下我不知道(并且2和3之间的差异是否显着?).

security csrf

19
推荐指数
1
解决办法
2万
查看次数

com.sun.faces.ClientStateSavingPassword - 实际密码的建议?

在我发现的关于加密ViewState的所有参考页面中,对密码的唯一评论是"您的密码在这里".

是否有关于我们应该使用的密码长度/复杂性的建议?

passwords client-side jsf-2 mojarra state-saving

8
推荐指数
1
解决办法
2557
查看次数

JSF"错误Mac没有验证!"

我一直在尝试使用jsf中的primefaces实现一些基本的推送功能.我在那里使用了反例http://www.primefaces.org/showcase-labs/push/counter.jsf.基本上它是一个增加共享计数器的按钮.运行此示例时,我总是收到此错误:

ERROR: MAC did not verify!
Run Code Online (Sandbox Code Playgroud)

我的理解是每个会话都会生成一个mac,然后检查每个传入的消息,以验证源没有改变(我认为).我一直无法找到原因并查看了其他主题,例如:

错误:MAC没有验证!PrimeFaces

JSF:Mojarra 2.1到2.2迁移导致ViewExpiredException

不幸的是,这些并没有解决我的问题 两者似乎都是由我没有得到的ViewExpiredException引起的.我发现阻止它的唯一方法是在web.xml中将状态保存方法从客户端更改为服务器:

<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
Run Code Online (Sandbox Code Playgroud)

但是,当这样做时,计数器不再共享,但似乎是每个用户,这不是我想要的.我的最终目标是实现一个聊天室,其中大部分都在那里,但现在它使用的短轮询不是很容易扩展.看过primefaces推后我认为这将是理想的,但一直在努力使用它.

我尝试过多个Web服务器(Tomcat,Jetty和Glassfish),并尝试使用不同版本的JSF(Mojarra)和primefaces版本(3.4和4.0).我已在多个浏览器和多台计算机上测试过它.有时我会在收到错误之前将计数器增加几次,有时它会立即发生.我没有例外或严重的错误,一切都编译.我还想提一下,我之前在其他项目上遇到过这个错误,但是在重新启动服务器后它已经消失了.当使用primefaces时,它总会发生.任何帮助将不胜感激.

编辑

在web.xml中将状态保存保留到服务器以避免MAC错误时,我注意到共享计数器在同一台计算机上以每个浏览器为基础工作.这意味着如果我有多个选项卡或窗口,则在所有选项卡的一个更新中更新计数器.但它不能跨浏览器工作,firefox中的计数器更改不会反映在chrome或IE中,或其他方式.如果在两台独立的计算机上也没有反映出来.我不知道这是否有帮助,但我想我会提到它.

编辑

在注意到示例中的bean是会话作用域后,我将其更改为应用程序作用域.当然,会话作用域意味着每个浏览器都有自己的副本.现在,更改将反映在浏览器和计算机上.回到我原来的问题,我仍然想知道为什么将保存状态更改为服务器修复了MAC错误,这是什么意思?我假设服务器现在必须维护每个会话的视图状态而不是客户端,可伸缩性更低/客户端 - 服务器流量更多?从我所看到的,如果你将保存状态设置为服务器,你无法检查查看过期的异常或阻止用户创建视图(如果它们已经有太多,这是正确的吗?)

java jsf primefaces

5
推荐指数
1
解决办法
1万
查看次数

JSF:Mojarra 2.1到2.2迁移导致ViewExpiredException

我将我的应用程序从PrimeFaces 3.5.18 + Mojarra 2.1.26移植到PrimeFaces 4.0.2 + Mojarra 2.2.4.

当我重新启动服务器时,我得到一个ViewExpiredException.

服务器日志包含: ERROR: MAC did not verify!

我知道默认情况下,MyFaces会生成一个随机密码来对视图状态进行编码,因此每次服务器重新启动时,都会生成一个新的随机密码.Mojarra 2.2的行为方式是否相同?

在这种情况下,我需要设置哪些上下文参数?谷歌搜索Mojarra 2.2上下文参数我能找到的最好的是这个,但是在MyFaces中没有SECRET或MAC_SECRETS参数

先谢谢,菲利普

mojarra jsf-2.2

3
推荐指数
1
解决办法
6689
查看次数