假设我需要从iPhone应用程序访问Web服务.此Web服务要求客户端对HTTP请求进行数字签名,以证明应用程序"知道"共享密钥; 客户端密钥.请求签名存储在HTTP头中,请求只是通过HTTP(而不是HTTPS)发送.
这个密钥必须始终保密,但需要iPhone应用程序使用.
那么,鉴于您始终被告知永远不会在客户端存储任何敏感内容,您将如何安全地存储此密钥?
普通用户(99%的用户)很乐意使用该应用程序.会有某个人(一个敌人?)想要这个秘密客户密钥,以便通过冒充来对服务或客户密钥所有者造成伤害.这样的人可能越狱他们的手机,访问二进制文件,运行"字符串"或十六进制编辑器并四处寻找.因此,仅将密钥存储在源代码中是一个糟糕的主意.
另一个想法是将密钥存储在代码中而不是字符串文字中,而是存储在从字节文字创建的NSMutableArray中.
可以使用钥匙串,但由于iPhone应用程序永远不必提供密码来存储钥匙串中的东西,我担心有权访问应用程序沙箱的人可以并且能够简单地查看或轻松解码其中的项目.
编辑 - 所以我读到了关于钥匙串的信息:"在iPhone OS中,应用程序总是可以访问自己的钥匙串项目,并且无法访问任何其他应用程序的项目.系统会为钥匙串生成自己的密码,并存储密钥在设备上以任何应用程序都无法访问它."
所以也许这是存放密钥的最佳位置....如果是这样,我如何使用预先输入到应用程序钥匙串中的密钥?那可能吗?否则,如果没有密钥在源代码中,你怎么能在第一次启动时添加密钥?嗯..
编辑 - 提交的错误报告#6584858在http://bugreport.apple.com
谢谢.
免责声明:我是REST学校的新手,我正试图围绕它思考.
所以,我正在阅读这个页面,常见的REST错误,而且我发现我对会话无关紧要的部分感到困惑.这就是页面所说的内容:
客户端不需要"登录"或"启动连接".HTTP验证在每条消息上自动完成.客户端应用程序是资源的消费者,而非服务.因此没有什么可登录的!假设您在REST网络服务上预订航班.您不创建与服务的新"会话"连接.而是要求"行程创建者对象"为您创建一个新的行程.您可以开始填充空白,然后在网络上的其他地方获得一些完全不同的组件以填充其他一些空白.没有会话,因此在客户端之间迁移会话状态没有问题.也没有"会话亲和力"的问题
好的,我得到HTTP身份验证是在每条消息上自动完成的 - 但是如何?是否每次请求都会发送用户名/密码?那不就是增加攻击面积吗?我觉得我错过了这个难题的一部分.
例如,拥有一个/session接受GET请求的REST服务是不是很糟糕,在请求中传入用户名/密码,如果验证成功则返回会话令牌,然后可以随后的请求传递?从REST的角度来看,这是否有意义,还是忽略了这一点?
我想用XAML为Silverlight创建一个关卡编辑器.在开始这样的项目之前,哪些资源对研究有用?
以下是一些需要澄清的信息.到目前为止,我制作了1个Silverlight游戏并将其发布.我想要一个头顶式动作游戏.地图将比当前可见空间大得多.
可以说我在MS SQL 2000中有下表
Id | description | quantity |
-------------------------------
1 my desc 3
2 desc 2 2
Run Code Online (Sandbox Code Playgroud)
我需要根据数量显示多行,所以我需要以下输出:
Id | description | quantity |
-----------------------------
1 my desc 1
1 my desc 1
1 my desc 1
2 desc 2 1
2 desc 2 1
Run Code Online (Sandbox Code Playgroud)
任何想法如何实现这一目标?
非常简单的问题(我希望),在使用MySQL数据库但是对于PostgreSQL数据库时,是否存在类似于phpMyAdmin的工具?
我不仅仅是谷歌搜索解决方案的原因是我对PostgreSQL的熟悉程度不如我对MySQL的熟悉,我希望SO社区能够提供你有经验的工具.
提前感谢您的任何回复.:)
我想在Windows和Java下与USB设备进行通信,但我找不到一个好的库.我不希望用户必须安装任何额外的硬件或设备驱动程序才能使其工作.也就是说,我希望能够像其他Windows应用程序一样与USB进行交互.
我熟悉jUSB和JSR 80,但两者似乎都是死的项目(至少对于Windows而言).
有一个奇怪的情况.我在我的企业应用程序中使用Glassfish服务器.在那个应用程序中,我使用的是JSF,Richfaces,Quartz,Jasper Reports和Commons Email.当我构建并部署应用程序到我的开发.计算机,开发和测试服务器,一切正常.但是,当我使用相同的glassfish将应用程序部署到生产服务器时,我无法运行Quartz调度程序.它让我觉得公共收藏有一些问题.我知道某处有冲突,但我无法找到.你能给我一些指点吗?顺便说一下,我正在使用NetBeans 6.5.
这是日志:
[#|2009-02-13T02:00:03.055+0000|WARNING|sun-appserver9.1|javax.enterprise.resource.webcontainer.jsf.lifecycle|_ThreadID=22;_ThreadName=httpSSLWorkerThread-80-4;_RequestID=97d21f45-2489-486c-b8d9-68625776c546;|#{SchedulerController.play}: java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;
javax.faces.FacesException: #{SchedulerController.play}: java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) …Run Code Online (Sandbox Code Playgroud) 有没有办法在命令提示符下打开命令提示符和更改目录,并使用java在同一命令提示符中运行批处理文件.
我知道如何使用java打开命令提示符.谢谢,
我试图用matplotlib在Python中绘制一堆数据点(数千个),所以我需要每个标记都非常小而精确.如何获得最小的最简单的标记?我使用此命令绘制我的数据:
matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')
Run Code Online (Sandbox Code Playgroud)
然后我可以用它来查看它pl.show()然后保存它.或者直接plt.savefig('filename.ps')在代码中使用来保存它.问题是这样的:当我pl.show()用来查看GUI中的文件时,它看起来很小,带有小的黑色标记,但是当我从show()GUI 保存到文件或直接使用savefig然后查看ps我创建的它看起来不同!每个标记都在它周围获得了一点蓝色光环(好像它从每个点开始将它们与默认的蓝线连接起来,但没有)并且样式都是错误的.保存时为什么会改变风格?如何阻止python强制标记的样式?是的,我已经看过一些像CairoPlot这样的替代软件包,但我现在想继续使用matplotlib.
更新:原来,保存为PNG首先使颜色变成好的,但它迫使图像的转换,当我想再次将其保存为.ps更高版本(包含在PDF),然后我失去质量.如何保留文件的矢量性质并获得正确的格式?
我目前正在尝试使用嵌入式ldap服务器进行单元测试.
在Spring Security中,您可以快速定义嵌入式ldap服务器,以便使用从指定的ldif加载的一些示例数据对标记进行测试.
我将使用Spring Ldap执行ldap操作,并考虑测试用户服务对象的常用CRUD功能.
但是,有没有办法确保嵌入式服务器中的条目处于相同的一致状态(有点像删除所有并重新加载ldif条目)我正在运行的每个测试?
我想到了以下内容:1)表明该方法污染了上下文,并强制重新创建嵌入式ldap服务器,这听起来很痛苦,因为它必须为每个方法重新启动服务器2)在测试组织中创建测试条目,这样我就可以取消绑定它们,然后再在那里再次加载ldif文件.
我更喜欢2,但似乎Spring LDAP没有好的帮助器来加载和发送ldif文件的内容.
有关如何使用spring的嵌入式ldap服务器或我提到的两种可能解决方案执行ldap测试的任何建议?
谢谢
java ×3
c# ×1
coding-style ×1
cryptography ×1
iphone ×1
matplotlib ×1
postgresql ×1
python ×1
rest ×1
security ×1
session ×1
silverlight ×1
spring ×1
spring-ldap ×1
sql ×1
usb ×1
windows ×1
xaml ×1