小编Sha*_*mes的帖子

IIS6或IIS7中的ColdFusion 8的Web文件安全性最佳实践

假设我们有一个内部写有CF应用程序的网站.

假使,假设:

  • 将使用Server 2003 IIS6或2008 IIS7
  • 将使用ColdFusion 8
  • 目录浏览被拒绝
  • 连接需要SSL
  • 帐户登录过程是安全的(是的,我知道这是一个完整的另一个蜡球,但这个概念在网络上讨论是偶然的).

假设我在https://domain.com/folder1/folder2/上有一个文件,其名称如picture92352.ext,可以将其想象为jpg或pdf等等.域名和文件之间的整个路径在命名结构,深度等方面差异很大.文件不会全部集中在一个文件夹中.

该应用程序限制用户的链接,以便用户必须首先访问该文件才能找到它,但现在如果一个人知道该文件的完整URL,他们可以在不登录应用程序的情况下检索该文件.这是默默无闻的经典安全状况.随机的人不太可能找到他们不应该找到的文件,但是一旦有人获得访问权限,他们就知道如何从另一台PC访问它,而他们的行为可能无法追溯到他们.

如何在有人登录之前限制对这些文件的访问,并且在登录后仍然可以让外部用户访问这些文件?有没有办法只使用权限,或者是在请求时让代码动态移动文件的唯一答案,还是有一些我甚至没想过的明显步骤?

让我稍微澄清一下.无论文件如何在页面上呈现,用户都可以使用浏览器IE,Firefox等来检查文件来自的URL.如果图像是链接,则IE的右键菜单中始终存在复制快捷方式,FF中的相同功能称为复制链接位置.如果图像以内嵌方式显示为页面的一部分,则IE用户可以右键单击并选择属性以查看URL,在FF中,相同的功能可用于查看属性,但有一个更方便的选项标记为复制图像位置.一旦用户知道文件的URL,如果位置或文件名没有改变,他们可以使用该URL而无需在CF应用程序中进行身份验证.

如果我更改NTFS /共享权限,以便IUSR无法看到内容,那么我的CF应用程序和IIS无法推送它.我使用什么策略在CF应用程序中提供不会打开此漏洞的文件?

coldfusion iis-7 iis-6

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

如何在ColdFusion中看到客户端URL?

让我们说,在ColdFusion网站上,用户已导航到 http://www.example.com/sub1/

服务器端代码通常用于告诉您用户所在的URL,如下所示: http://#cgi.server_name##cgi.script_name#?#cgi.query_string#

但是,"cgi.script_name"会自动包含该文件夹的默认cfm文件 - 例如,该代码在解析和扩展时会向我们显示" http://www.example.com/sub1/index.cfm "

因此,无论用户是访问sub1/index.cfm还是sub1 /,"cgi.script_name"var都将包含"index.cfm".

问题是,如何确定用户实际访问的URL?这个问题主要是针对搜索引擎优化的目的 - 301通常更喜欢将"/index.cfm"重定向到"/"以确保任何一条内容只有一个网址 - 因为这主要是为了蜘蛛的利益,javascript isn在这种情况下是一个合适的解决方案.另外,假设一个人无权访问isapi_rewrite或mod_rewrite-问题是如何在ColdFusion中实现这一点,具体而言.

url coldfusion cgi

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

在ColdFusion中调用远程API偶尔会导致超时

我在我公司的网站上有一个函数,它使用cgi.remote_host变量调用hostip.info提供的API 并返回orgin的国家/地区.这应该是这样的:

  • 该函数从API中查找国家/地区,
  • 对我们的本地数据库运行查询,以确定我们要将用户转发到哪个站点,以及
  • 将用户重定向到适当的站点.

如果由于任何原因,我们无法将国家/地区与我们的某个地区相关联,我们会将用户重定向到默认网站.

什么实际发生的情况是,偶尔,我们的服务器无法定位API,我们得到一个超时错误.

这是我们要求获得领土的功能的代理:

<cffunction name="getGeoInfo" access="public" output="true" returntype="any" hint="call getGeoIP API and check country against DB">
    <cfargument name="IPAddress" required="yes" type="string" />

    <!--- Calling hostip API to get our Geo IP information --->
    <cfhttp url="http://api.hostip.info/?ip=#arguments.IPAddress#" method="get" result="geoIP" />

    <!--- Try to parse the file, if it can't parse, we don't create the variable --->
    <cftry>
        <cfset geoIPXML = xmlParse(geoIP.fileContent) />
    <cfcatch type="any" />
    </cftry>

    <!--- If variable was …
Run Code Online (Sandbox Code Playgroud)

coldfusion

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

有没有更好的方法来逃避这个字符串?

ColdFusion(或Java)中转换字符串的最快方法是什么:

Input:
79827349837493827498

Output:
\79\82\73\49\83\74\93\82\74\98
Run Code Online (Sandbox Code Playgroud)

我正在使用LDAP GUID并将其转义为查询.

我可以将其作为一系列MID减少,如下所示:

  <CFSET V1 = "">
  <CFSET RetVal = "">
  <CFLOOP CONDITION="#V1# NEQ''">
      <CFSET RetVal = RetVal & "\" & MID(V1,1,2)>
      <CFSET V1 = MID(V1,3,2000)>
  </CFLOOP>
Run Code Online (Sandbox Code Playgroud)

但似乎会有更优雅的东西,比如正则表达式替换.

java algorithm coldfusion

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

ColdFusion结构一次初始化许多属性

我见过ColdFusion 9代码,它一次初始化一个结构的许多属性.这是一个例子:

<!--- 
 pseudo constructor code 
--->
<cfset variables.instance = {
            first_name  = '',
            last_name   = '',
            gender      = '',
            dateofbirth     = ''
            } />
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点coldfusion MX7

coldfusion

2
推荐指数
2
解决办法
467
查看次数

ColdFusion:从查询中获取结果量

我有一些ColdFusion输出:

<cfoutput query="myList">#Email#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

如果我的列表恰好有多个结果,则此输出将循环并打印出所有电子邮件.但是,如果没有结果,我想写一个语句来输出一条消息......

这是如何运作的?它似乎#Email#是一个变量,但它也可以是一个数组......如何计算使用这样的结果数?

更新:我还尝试使用存储过程来执行COUNT,这给了我数量......但我不确定如何在coldfusion <cfif>语句中使用存储过程的结果...

coldfusion

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

来自cfscript中EntityLoad的ColdFusion ORM Call方法

我正在尝试做一些我认为非常基本的事情,但我无法让它发挥作用.我这样调用EntityLoad:

<cfscript>

   transaction {

       dataLoad = EntityLoad("trans");  
   }

</cfscript>
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做基于标记我可以循环它并调用这样的方法:

<cfloop array="#dataLoad#" index="x">

    <cfoutput>#x.getCompanyName()#</cfoutput>

</cfloop>
Run Code Online (Sandbox Code Playgroud)

但我试图在cfscript中这样做.我能想出的最接近的事情是:

<cfscript>

    for (x=1;x <= ArrayLen(dataLoad);x=x+1){

        writeOutPut(dataLoad.companyName());            

    }

</cfscript>
Run Code Online (Sandbox Code Playgroud)

我知道cfscript中的for循环与cfloop数组不同.在cfscript中有没有相当于cfloop的数组呢?

如果不是,我如何从cfscript调用EntityLoad中的方法?

在此先感谢您的帮助.

coldfusion orm hibernate

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

JavaScript数组到ColdFusion

我有一个用JavaScript创建的数组.最终结果出现在element1,element2 ,,, element5,element6 ,,, element9 ......等

一旦传递给ColdFusion,它就会删除null元素,最后是element1,element2,element5,element6,element9

我需要保持这些空间,任何想法?我的问题可能在此之前开始,以便更详细地解释......

我有一个包含13个元素的表单,它们充当搜索/过滤器类型函数.我想用AJAX"发布",实质上,我正在使用一个按钮来调用jQuery函数,并希望将字段传递给ColdFusion页面,然后将结果传回.JavaScript数组甚至可能不是我的最佳选择.

有任何想法吗?

javascript forms coldfusion jquery

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

cfloop标记内的div标签会引入不需要的换行符

我在ColdFusion中有一个网页,显示SQL表中的内容.使用cfloop迭代内容,并使用div块进行渲染.我的代码片段如下 -

<cfloop query="qry1">
<div class="subBlock">
    <div class="item"><h4>Date:</h4><p>#qry1.date#</p></div>
    <div class="item"><h4>Name:</h4><p>#qry1.name#</p></div>
    <div class="item"><h4>Address:</h4><p>#qry1.address#</p></div>
</div>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

在页面上显示的内容看起来像 -

Date:

06/01/2009 03:40 PM

Name:

XYZ ABC

Address:

ZZZ St. 
Run Code Online (Sandbox Code Playgroud)

所以问题是我得到了这些换行符.虽然我想要的是这样的东西 -

Date:06/01/2009 03:40 PM

Name:XYZ ABC

Address:ZZZ St.
Run Code Online (Sandbox Code Playgroud)

我在另一个页面上使用了类似的div,并在那里正确显示.这里唯一的区别是我在cfloop标签中使用div标签.

请让我知道我哪里出错了.

干杯

html css coldfusion

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

在使用cfpdfform action ="read"之前,检查ColdFusion中是否存在交互式表单

我正在使用cfpdfform从Adobe LiveCycle中创建的上传PDF表单中读取值,然后使用Adobe Acrobat填写.

要读取表单值,我使用命令:

<cfpdfform source="#pathToNewPDFFile#" action="read" xmlData="xmlFields" />
Run Code Online (Sandbox Code Playgroud)

但如果没有表格的PDF上传(即其他一些PDF)ColdFusion错误,请注意以下事项:

The source PDF document is not an interactive form.
Run Code Online (Sandbox Code Playgroud)

有什么方法可以测试ColdFusion中PDF表单的存在而无需捕获和解释此错误?

我试过了cfpdf action="pdfinfo",但是在交互式和非交互式表单之间没有任何变量似乎发生变化.

谢谢,

汤姆

forms pdf coldfusion

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

如何在ColdFusion中获取变量NAME而不是变量的VALUE?

基本的想法是这样的:我有一个动态生成表单字段的表单,所以假设有5个人可以注册(它们都花费10美元)然后将显示这5个evens.像这样:

          <tr>
            <th><label>#SeminarWisTitle#</label></th>
            <td>
            <label><input type="checkbox" name="#SeminarWisID#" value="10.00" onclick="CheckChoice(this);" onfocus="startCalc();" onblur="stopCalc();" class="checkbox" /> Individual Webinar ($119)</label>
            </tr>
          </cfoutput>
Run Code Online (Sandbox Code Playgroud)

现在因为Javascript,所有这些事件的值都是10.00,但表单字段的名称将是唯一的,这就是我实际上想要存储在数据库中的内容.

这是我写的代码:

<cfparam name="seminarBulkSignUp_List" default="">
            <cfoutput query="qSeminarWisTwo">
                <cfparam name="FORM.#SeminarWisID#" default="">

                <cfif #FORM[#SeminarWisID#]# neq "">
                    <cfset seminarBulkSignUp_List = ListAppend(seminarBulkSignUp_List, #FORM[#SeminarWisID#]#)>
                </cfif>
            </cfoutput>

            <cfset FORM.SeminarWisTitle = #seminarBulkSignUp_List#>
Run Code Online (Sandbox Code Playgroud)

因此,使用此代码,我对所有可能的事件运行查询,然后只检查已提交的表单,以查看哪些是"空白",如未选中,以及我想要添加的选择要存储在数据库中的列表.

现在这可以让我知道哪些事件被选中,哪些没有,但我希望列表编译实际的FORM FIELD名称而不是他们拥有的值.我该怎么办?

variables coldfusion

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

标签 统计

coldfusion ×11

forms ×2

algorithm ×1

cgi ×1

css ×1

hibernate ×1

html ×1

iis-6 ×1

iis-7 ×1

java ×1

javascript ×1

jquery ×1

orm ×1

pdf ×1

url ×1

variables ×1