- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ColdFusion 9 和 jQuery。
我对通过 CFAJAXPROXY 使用 ColdFusion CFC 还很陌生。我很好奇我的数据库是否面临风险以及如何轻松修补安全漏洞。
我把它放在页面顶部:
<cfajaxproxy cfc="brands" jsclassname="jsApp">
这是登录后使用的 CFC:
<!--- ADD BRAND --->
<cffunction name="addBrand" access="remote">
<cfargument name="SiteID" required="true">
<cfargument name="Brand" required="true">
<cfscript>
LOCAL.SiteID = ARGUMENTS.SiteID;
LOCAL.Brand = trim(left(ARGUMENTS.Brand, 50));
</cfscript>
<cfquery name="GetBrands">
INSERT INTO Brands(SiteID, Brand)
VALUES (<cfqueryparam cfsqltype="cf_sql_integer" value="#LOCAL.SiteID#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#LOCAL.Brand#">)
</cfquery>
<cfreturn true>
</cffunction>
这是将数据发送到 CFC 的 jQuery
$("#AddBrand").click(function() {
NewBrand = $("#NewBrand").attr("value");
var jro = new jsApp();
jro.addBrand(NewBrand);
});
那么,这里是否存在很大的安全漏洞? access="remote"应该仅用于检索数据吗?
最佳答案
不,access='remote' 不需要仅用于检索数据,但确实需要谨慎使用并了解安全隐患。
按照您现在设置的方式,任何人都可以调用将某些内容插入您的数据库(假设没有我们没有看到的其他访问控制)。因此,您可能应该实现某种类型的访问控制来保护此功能和其他功能。
现在我假设您没有在问题中添加“轻松”一词,而我将添加“实际上”一词。谈到安全性,很少有“简单”的事情。
因此,您可以通过多种方式来保护这些方法。很大程度上取决于您想如何做以及您已经在做什么。
如果您使用 <cflogin>
您也许可以添加 roles="<Your Admin role name>"
到函数。我从未尝试过这个,但我怀疑它会起作用。 (就我个人而言,出于多种原因,我不喜欢这种方法,但它是一种选择)
您可以在函数顶部放置某种授权代码。
<cfif NOT mySecurityCFC.isAuthorized(COOKIE.CFID,COOKIE.CFTOKEN)><cfreturn /></cfif>
我也不喜欢这种方法。
您可以使用新的 onCFCRequest()
ColdFusion 9 中 App.cfc 的方法来拦截请求并通过授权例程运行它们。这比选项 2 更干净。我想说这是最简单的选项,并且会有效地工作,但我个人更喜欢选项 4。
ColdSpring 项目有一些很棒的工具,用于自动创建和使用远程代理对象,这些对象还可以通过面向方面编程 (AOP) 结合安全性。远程代理和 AOP 的组合非常强大,可以让您在不暴露真正的底层对象的情况下创建远程方法,并拦截和授权对这些方法的每个请求,而无需将代码缝合到每个方法中。事实上,这些方法本身甚至不知道它们受到保护。
我会选择选项 4。这可能听起来像是一个令人畏惧且非常高级的过程,在某些方面确实如此,但它实际上比您想象的要容易实现得多。 ColdSpring 快速入门指南中概述了这些步骤。 http://www.coldspringframework.org/index.cfm/go/documentation
关于jquery - 当远程访问时,ColdFusion CFC 是否非常安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114366/
我的 Elasticsearch 安装在 azure 虚拟机上。 在本地工作正常: http://localhost:9200/ 如何从外部使用它? 谢谢 最佳答案 在您的 Elasticsearch
我已经在 Linux(CenOS) 服务器上安装了 mongodb,正如 docs 中所写的那样.但是远程访问仍然是不可能的(尽管从本地的 mongo shell 连接是可以的)。有人可以提供有关正确
当Microsoft Sqlserver 2012 安装好后,接下的的工作需要配置Sqlserver数据库允许远程访问,只有配置了Sqlserver远程访问,其他ip客户端才能访问,配置sqlser
我有两台装有 windows xp 的电脑。 我想将第一个用作 git 服务器,第二个用作工作站。 在本地计算机上运行 git 非常好,但是对于两台计算机之间的通信,我需要 ssh。 (我想) 我找到
我在本地安装了 openMQ,它运行良好。我使用以下代码通过 JNDI 查找获取 QueueConnectionFactory。 Hashtable env = new Hashtable(); en
我正在使用 laravel 5.4 并在远程服务器 ubuntu 16.04 上使用最新的 mariaDB, 我几乎完成了谷歌中列出的所有配置,并且还恢复到原始状态。 我当前的问题是无法连接到远程 m
我想使用现有用户名访问我的 PostgreSQL 8.3 数据库,但是当我尝试时,密码验证失败。我可以通过创建一个新的 Postgres 用户来访问数据库: postgres createuser -
我已经在我的 Win2k3x86 虚拟机上安装了 MySql,并尝试在我的 Mac 上使用 SequelPro 连接到它,这样我就可以运行一个大的 sql 语句(~30mb - SQL Workben
我想通过命令行连接到网络上 VM 上的 MySql 数据库。我正在尝试使用 telnet user@192.xxxx 3306,但我收到以下消息 Name or service not known。我
我在服务器 10.37.45.89 上安装了 apache httpd,服务器上安装了 wsgi_module。我已将我的 wsgi.conf 文件放在 /etc/apache2/conf.d 位置下
我已经在 Linux 上安装了 glassfish 应用服务器。因此,我部署了一个应用程序,一切正常。但我只能从本地网络访问该服务器。我无法远程访问 glassfish(无法访问应用程序或 glass
我在某个服务器上运行 hadoop 服务器,比方说在 IP 192.168.11.7 上并使其 core-site.xml 如下: fs.defaultFS hdf
我正在研究 Hive。我想通过 Hive JDBC 访问 Hive 表。我正在使用的代码如下: public class HiveJdbcClient { private static String
在过去的三四个月里,我在本地部署了 PostGIS,但现在我刚刚获得了一个服务器来部署 PostGIS 并扩展我的开源冒险。我已经安装了 Postgres/gis 并且它在我的 Windows 服务器
我已经在远程 Ubuntu 服务器上安装了 Apache Cassandra。如何允许远程访问 Apache Cassandra 数据库?以及如何建立联系? 最佳答案 cassandra 3.11.3
我正在尝试从我的 mac 远程访问 Jetson Nano。到目前为止,我已经完成了以下工作: 我在我的 Mac 上安装了 microsoft Remote Desktop 我通过 Micro-usb
我有一个安装在 Amazon EC2 实例中的 k8s 集群,我想使用 GitLab 配置 CI。为此,GitLab 向我请求了 Kubernetes API URL。 我跑了kubectl clus
我有一个开源 xenserver 产品(来自 xenserver.org)。我需要从 Java 代码远程访问 VM。例如,远程重启。我找到了SDK“API入门”http://docs.vmd.citr
我想详细地远程连接 mysql 数据库,我想制作这样的应用程序,我的数据库仅在托管服务器中,而我的 php 页面在客户端电脑中始终处于离线状态。可能或不可能。如果是的话怎么可能。我正在使用 godad
我想为 iPad 制作一个应用程序,通过 iPhone 应用程序进行控制。是否可以在 iPhone 上访问 PhoneGap-App?我不想使用外部服务器,因为应用程序应该在临时网络中离线运行。 首先
我是一名优秀的程序员,十分优秀!