如果您对比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于比较C#和ColdFusion(CFMX_CO
如果您对比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值的详细内容,我们还将为您解答c# hashmap和hashtable的区别的相关问题,并且为您提供关于404处理程序挂在ColdFusion 10上,可以在ColdFusion 8上完美运行、ajax – 在Coldfusion中保护远程CFC、AngularJS和ColdFusion CFC、ColdFusion的有价值信息。
本文目录一览:- 比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值(c# hashmap和hashtable的区别)
- 404处理程序挂在ColdFusion 10上,可以在ColdFusion 8上完美运行
- ajax – 在Coldfusion中保护远程CFC
- AngularJS和ColdFusion CFC
- ColdFusion
比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值(c# hashmap和hashtable的区别)
#Hash(Encrypt(Form.UserPassword,GetSiteVars.EnCode))#
我试图在c#应用程序中添加一些外部功能.我希望能够利用已存在的数据,以便我可以对用户进行身份验证.有谁知道如何在c#中复制上面的coldfusion代码?
谢谢你的任何想法.
解决方法
相反,请参阅2011年1月@Terrapin在此主题中的最高投票答案.我希望OP看到这个并且可以更改已接受的答案.哎呀,我甚至会标记模组,看看是否可以做任何事情.
为了建立爱德华史密斯的答案,以及czuroski的后续评论,这是我的解决方案.
首先,你需要在C#中使用XOR函数,我从here开始并略微修改.
using System; using System.Collections.Generic; using System.Text; namespace SimpleXOREncryption { public static class EncryptorDecryptor { public static string EncryptDecrypt(string textToEncrypt,int key) { StringBuilder inSb = new StringBuilder(textToEncrypt); StringBuilder outSb = new StringBuilder(textToEncrypt.Length); char c; for (int i = 0; i < textToEncrypt.Length; i++) { c = inSb[i]; c = (char)(c ^ key); outSb.Append(c); } return outSb.ToString(); } } }
然后,取XOR的结果并对其进行base-64编码.拥有该字符串后,MD5将其哈希.结果应与原始代码段的结果匹配:
#Hash(Encrypt(Form.UserPassword,GetSiteVars.EnCode))#
404处理程序挂在ColdFusion 10上,可以在ColdFusion 8上完美运行
我的ColdFusion 10服务器上的404处理程序页面出现间歇性奇怪的问题。这是背景故事:
我们一直在运行2台负载平衡的ColdFusion 8服务器,而且使用年龄没有问题。
我们已将这两个服务器之一升级到ColdFusion 10,以便软启动我们的ColdFusion 10升级。
我已经在CF10服务器上安装了Update 8,并且已删除并重新添加了连接器。
两台服务器都运行Windows 2008 R2。
我已经阅读了多个论坛帖子,指出人们在其404页面上遇到连接重置问题,但是我没有看到该特定问题。我看到的是FusionReactor中的404.cfm文件挂起线程。这是从这些挂起的线程之一中获取堆栈跟踪的示例:
Thread Stack TraceTrace Time: 07:02:14.638 04-Mar-2013Request ID: 179934Script Name: http://example.com/404.cfm?404;http://example.com:80/somemissingfileStarted: 06:07:17.581 04-Mar-2013Exec Time: 3297057msMemory Used: (32%)1,669,600KBMemory Free: 3,539,295KBThread ID: 0x53de (21470)Thread Name: ajp-bio-8012-exec-86Priority: 5Hashcode: 1636847260State: RUNNABLE"ajp-bio-8012-exec-86" daemon prio=5 runnablejava.net.SocketInputStream.socketRead0(SocketInputStream.java:???)[Native Method]java.net.SocketInputStream.read(SocketInputStream.java:129)org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:319)org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:445)org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:341)org.apache.coyote.ajp.AbstractAjpProcessor.finish(AbstractAjpProcessor.java:1032)org.apache.coyote.ajp.AbstractAjpProcessor.action(AbstractAjpProcessor.java:386)org.apache.coyote.Response.action(Response.java:170)org.apache.coyote.Response.finish(Response.java:276)org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:288)org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:108)com.intergral.fusionreactor.plugin.amf.InterposerOutputStream.close(InterposerOutputStream.java:104)com.intergral.fusionreactor.trackedstream.TrackedStream.close(TrackedStream.java:113)com.intergral.fusionreactor.filter.softkill.SoftKillResponseStream.close(SoftKillResponseStream.java:146)com.intergral.fusionreactor.filter.FusionReactorResponseWrapper.finish(FusionReactorResponseWrapper.java:192)com.intergral.fusionreactor.core.FusionReactor.finish(FusionReactor.java:683)com.intergral.fusionreactor.filter.FusionReactorCoreFilter.doHttpServletRequest(FusionReactorCoreFilter.java:575)com.intergral.fusionreactor.filter.FusionReactorCoreFilter.doFusionRequest(FusionReactorCoreFilter.java:337)com.intergral.fusionreactor.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:246)com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter(FusionReactorFilter.java:121)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414)org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:204)org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)java.lang.Thread.run(Thread.java:662)
我尝试通过FusionReactor手动杀死这些线程,但它们不会死。清除挂起的线程的唯一方法是重新启动ColdFusion服务(自升级到ColdFusion
10以来,我每天至少必须这样做一次。
404除了运行我们的标准布局自定义标记并显示未找到页面的通知外,没有执行其他任何特殊操作。
查看线程转储,似乎ColdFusion已完成处理并完成了用输出填充缓冲区的操作,但是还没有完成向浏览器的发送?
org.apache.coyote.ajp.AbstractAjpProcessor.finish(AbstractAjpProcessor.java:1032)org.apache.coyote.ajp.AbstractAjpProcessor.action(AbstractAjpProcessor.java:386)org.apache.coyote.Response.action(Response.java:170)org.apache.coyote.Response.finish(Response.java:276)org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:288)org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:108)
关于结束和结束有很多东西,但是后面的步骤有更多的读物和回应。因此,我不确定这里会发生什么,但这肯定使我们ColdFusion
10迁移的完成停滞了。我需要确切地找出导致这些挂起线程的原因。
答案1
小编典典您遇到的是我在一月份遇到的同一错误。我已将错误记录在Adobe的错误库中:
https://bugbase.adobe.com/index.cfm?event=bug&id=3494728
他们的工程团队已经确认了该问题,但没有实际修复的预计到达时间。CF10中用于IIS的Adobe用于IIS的连接器对我们来说很麻烦。您可以设置超时来杀死这些挂起的线程,如我的解决方法中所述,这至少使您不必每天重新启动服务器。祝好运!
ajax – 在Coldfusion中保护远程CFC
https://www.mySite.com/pathToCFC/MyCFC.cfc?method=getBankInfo&userID=2343
所以这显然是超级不安全的,因为任何人都可以从浏览器中调用它并更改userID以获取不同用户的银行信息.
我已经阅读了有关在远程函数上使用roles属性并使用cflogin对用户进行身份验证的内容,但即使有了这个,你也不必像上面的调用一样传递userID吗?经过身份验证的用户是否仍然无法切换用户ID以发现新用户的银行信息?
解决方法
因此,如果您正在使用cflogin,并且您在单个服务器或粘性会话服务器上,则将userid和任何其他关键信息存储在会话范围中.
在每个请求中,您从会话中获取此数据,而不是从客户端提供的数据中获取.
这是User Security in Coldfusion的一个很好的起点
AngularJS和ColdFusion CFC
以下是我的artists.cfc:
<cfcomponent> <cffunction name="getArtists" access="remote" > <cfargument name="firstName" default=""> <cfargument name="lastName" default=""> <cfquery name="getArtists_sql" datasource="cfartgallery"> SELECT firstname as text,lastname as done FROM artists WHERE 0=0 <cfif firstName neq ""> AND ucase(firstname) like ucase('%#FirsTNAME#%') </cfif> <cfif lastName neq ""> OR ucase(lastname) like ucase('%#LASTNAME#%') </cfif> </cfquery> <cfreturn getArtists_sql> </cffunction> </cfcomponent>
我使用AngularJS使用以下代码调用CFC:
function TodoCtrl($scope,$http) { $http.get('cfc/artists.cfc?method=getArtists&returnformat=json'). success(function (response) { $scope.todos = data.DATA; }). error(function (data) { $scope.todos = data; }); }
我知道我得到了回复.以下是Chrome的开发者工具为我返回的JSON字符串:
{ "COLUMNS": ["TEXT","DONE"],"DATA":[ ["Aiden","Donolan"],["Austin","Weber"],["Elicia","Kim"],["Jeff","Baclawski"],["Lori","Johnson"],["Maxwell","Wilson"],["Paul","Trani"],["Raquel","Young"],["Viata","Trenton"],["Diane","Demo"],["Anthony","Kunovic"],["Ellery","Buntel"],["emma",["Taylor Webb","Frazier"],["Mike","Nimer"] ]}
这看起来不像Angular在他们的演示中使用的符号:
[ {text:'learn angular',done:true},{text:'build an angular app',done:false} ]
有人能指出我正确的方向,我怎么能让这个正常工作?理想情况下,我希望保持CFC完好无损,以便可以在不同的应用程序中重用,因此JSON操作必须在Javascript端完成.
解决方法
您将需要此功能:
<cffunction name="QueryToArray" access="public" returntype="array" output="false"hint="This turns a query into an array of structures."> <cfargument name="Data" type="query" required="yes" /> <cfscript> // Define the local scope. var LOCAL = StructNew(); // Get the column names as an array. LOCAL.Columns = ListToArray( ARGUMENTS.Data.ColumnList ); // Create an array that will hold the query equivalent. LOCAL.QueryArray = ArrayNew( 1 ); // Loop over the query. for (LOCAL.RowIndex = 1 ; LOCAL.RowIndex LTE ARGUMENTS.Data.RecordCount ; LOCAL.RowIndex = (LOCAL.RowIndex + 1)){ // Create a row structure. LOCAL.Row = StructNew(); // Loop over the columns in this row. for (LOCAL.ColumnIndex = 1 ; LOCAL.ColumnIndex LTE ArrayLen( LOCAL.Columns ) ; LOCAL.ColumnIndex = (LOCAL.ColumnIndex + 1)){ // Get a reference to the query column. LOCAL.ColumnName = LOCAL.Columns[ LOCAL.ColumnIndex ]; // Store the query cell value into the struct by key. LOCAL.Row[ LOCAL.ColumnName ] = ARGUMENTS.Data[ LOCAL.ColumnName ][ LOCAL.RowIndex ]; } // Add the structure to the query array. ArrayAppend( LOCAL.QueryArray,LOCAL.Row ); } // Return the array equivalent. return( LOCAL.QueryArray ); </cfscript> </cffunction>
然后你的回报将如下:
<cfreturn SerializeJson(QueryToArray(getArtists_sql),true)>
要记住的是,CFquery对象包含其他属性,如recordcount …而且很可能,JS只需要数据.我不知道是否有一个更优雅的解决方案,但这是我们遇到与Jqgrid类似问题时的解决方案.
ColdFusion
The primary feature of ColdFusion is its associated scripting language,ColdFusion MarkuP Language (CFML),which compares to JSP,C#,or PHP and resembles HTML in Syntax. "ColdFusion" is often used synonymously with "CFML",but it should be noted that there are additional CFML application servers besides ColdFusion,and that ColdFusion supports programming languages other than CFML,such as server-side Actionscript.
Originally a product of Allaire,in 2001 the company was purchased by Macromedia,who subsequently merged with Adobe Systems in 2005.
ColdFusion is most often used for data-driven web sites or intranets. More advanced users can use ColdFusion as a productivity layer above a J2EE platform or use ColdFusion as middleware in a service oriented architecture (SOA),generating SOAP or RESTful web services or Flash remoting.
ColdFusion(直译:冷聚变),是一个动态Web服务器,其CFML(ColdFusion MarkuP Language)是一种程序设计语言,类似现在的JavaServer Page里的JSTL(JSP Standard Tag Lib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。Coldfusion 最早是由 Allaire 公司开发的一种应用服务器平台,其运行的 CFML(ColdFusion MarkuP Language) 针对Web应用的一种脚本语言。文件以*.cfm为文件名,在ColdFusion专用的应用服务器环境下运行。在 Allaire 公司被 Macromedia 公司收购以后,推出了 Macromedia ColdFusion 5.0,类似于其他的应用程序语言,cfm文件被编译器翻译为对应的 c++ 语言程序,然后运行并像浏览器返回结果。自Macromedia接收Allaire公司后,把原来基于C++开发的ColdFusion改为基于JRun的J2EE平台的一个Web Application(JRun也是Allaire公司的一个J2EE服务器产品),并正式推出 Macromedia ColdFusion MX 6.0 版本,此时的cfm运行原理就和java非常的类似,cfm文件被应用服务器编译为对应的 java 代码并编译成 .class 文件在 jvm 虚拟机上运行。从此ColdFusion完全从一个功能齐全的动态Web服务器转变为一个J2EE应用服务器。同时依旧保留了原有版本的所有特性。ColdFusion 的页面后缀通常为.cfm,同时 Macromeida 公司在发布 ColdFusion MX 的时候借鉴于 java 面向对象设计风格,设置了 .cfc 这样的 ColdFusion 文件后缀,他们被称作 ColdFusion Components [CFM组件]。 cfc 文件就好比一组 cfm function 的集合,使对应的代码具有高度的可重用性。虽然 .cfc 和 custom tag 具有类似的重用性,但 cfc 提供了更加灵活的调用方式,例如 webservice 方式的调用支持。CFM 并不等同于 ColdFusion。 CFM 是一种标志语言,而 ColdFusion 是一种应用服务器环境。对于标准的语法结构的 cfm,cfc 文件,它们不仅仅可以运行在 Macromedia ColdFusion 服务器上,同样的也可以直接在BlueDragon服务器环境下。
今天关于比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值和c# hashmap和hashtable的区别的讲解已经结束,谢谢您的阅读,如果想了解更多关于404处理程序挂在ColdFusion 10上,可以在ColdFusion 8上完美运行、ajax – 在Coldfusion中保护远程CFC、AngularJS和ColdFusion CFC、ColdFusion的相关知识,请在本站搜索。
本文标签: