首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >magic_quotes_gpc设置为ColdFusion?ColdBox?

magic_quotes_gpc设置为ColdFusion?ColdBox?
EN

Stack Overflow用户
提问于 2015-04-03 10:54:54
回答 2查看 122关注 0票数 0

我是ColdFusion新手,希望从输入字段的值中删除单引号。我试图在谷歌上搜索,我发现的是使用"magic_quotes_gpc“或"mysql_real_escape_string”,但这些函数在ColdFusion中并不存在。有没有办法在ColdFusion中处理这种mysql查询注入?

更新:

谢谢你的回复,但请看我的代码

代码语言:javascript
复制
<div class="form-group">
    <label for="jobDesc">Job description</label>
    <textarea name="description" class="form-control" rows="3" id="jobDesc">
        <cfif isdefined('userTime')>#userTime.description#</cfif>        
   </textarea>
</div>

我只想在文本区域使用单引号,而我的表单是提交给事件的。查询是:

代码语言:javascript
复制
 sqlstr = "";
          sqlstr = "insert into usertime set
          userid = '#arguments.userTimeParams.userid#',
          projectid = '#arguments.userTimeParams.projectid#',
          timesheetdate = '#arguments.userTimeParams.timesheetdate#',
          estimatedtimespent = '#arguments.userTimeParams.jobhours * 60 + arguments.userTimeParams.jobMins#',
          description = '#arguments.userTimeParams.description#',
          timeentered = #arguments.userTimeParams.timeentered#;";

            queryObj = new query();
            queryObj.setDatasource("timesheet");
            queryObj.setName("adduserTime");
            result = queryObj.execute(sql=sqlstr);
            adduserTime = result.getResult();
            return result.getPrefix().generatedKey;

我有一个选项,我可以添加斜杠到我的字符串,但然后我必须在所有字符串中添加斜杠。那么,是否有任何函数或方法可以用较少的代码行来完成此操作呢?

很抱歉在知识有限的情况下问了很多问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-03 11:55:50

嗯..。只是不要在SQL语句中传递硬编码的用户输入(或任何其他数据~)值,而是将它们作为参数值传递。

示例:

代码语言:javascript
复制
coloursViaQueryExecute = queryExecute("
    SELECT  en AS english, mi AS maori
    FROM    colours
    WHERE   id BETWEEN :low AND :high 
    ",
    {low=URL.low, high=URL.high},
    {datasource="scratch_mssql"}
);

其中lowhigh是您的参数。

见相关文档@ QueryExecute()

以及关于这一专题的进一步阅读:

  • 缺位
票数 4
EN

Stack Overflow用户

发布于 2015-04-03 13:55:44

在不对用户数据进行参数化的情况下,您将打开SQL注入。REReplace()可能不会捕捉到所有的东西。下面是如何重写代码以使用cfqueryparam。您可能需要调整addParam()方法调用以添加正确的cfsqltype

代码语言:javascript
复制
sqlstr = "";
      sqlstr = "insert into usertime set
      userid = :userid,
      projectid = :projectid,
      timesheetdate = :timesheetdate,
      estimatedtimespent = :estimatedtimespent,
      description = :description,
      timeentered = :timeentered";

        queryObj = new query();
        queryObj.setDatasource("timesheet");
        queryObj.setName("adduserTime");
        queryObj.addParam( name="userid", value=arguments.usertimeparams.userid);
        queryObj.addParam( name="projectid", value=arguments.usertimeparams.projectid);
        queryObj.addParam( name="timesheetdate", value=arguments.usertimeparams.timesheetdate, cfsqltype="CF_SQL_TIMESTAMP");
        queryObj.addParam( name="estimatedtimspent", value=arguments.userTimeParams.jobhours * 60 + arguments.userTimeParams.jobMins, cfsqltype="CF_SQL_INTEGER");
        queryObj.addParam( name="description", value=arguments.usertimeparams.description);
        queryObj.addParam( name="timeentered", value=arguments.usertimeparams.timeentered, cfsqltype="CF_SQL_INTEGER");
        result = queryObj.execute(sql=sqlstr);
        adduserTime = result.getResult();
        return result.getPrefix().generatedKey;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29430826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档