Coldfusion Cfquery导致XSS和SQL注入问题

Coldfusion Cfquery导致XSS和SQL注入问题,coldfusion,xss,sql-injection,cfquery,Coldfusion,Xss,Sql Injection,Cfquery,我最近在IBM运行了一次应用程序扫描,现在我正在尝试修复出现的问题。我的大部分问题都源于cfquery,见下文。我正在尝试获取它,以便存储的XSS和SQL注入问题不会出现在我的扫描中。任何帮助都将不胜感激,因为这是我第一次做这种事情 谢谢 <cfquery name="enter_question" datasource="#dsn#"> INSERT INTO xx_questions(q_id, q_name,

我最近在IBM运行了一次应用程序扫描,现在我正在尝试修复出现的问题。我的大部分问题都源于cfquery,见下文。我正在尝试获取它,以便存储的XSS和SQL注入问题不会出现在我的扫描中。任何帮助都将不胜感激,因为这是我第一次做这种事情

谢谢

<cfquery name="enter_question" datasource="#dsn#">
INSERT INTO xx_questions(q_id,
                      q_name,
                  q_narrative,
                  q_used,
                  q_type)
VALUES(               #variables.new_q_id#,
                      '#form.q_name#',
                  '#form.q_narrative#',
                  'n',
                  #form.q_type#)
</cfquery>
你需要使用。查看以下位置的文档:

尝试以下方法您应该更改CFSQLType以匹配您的DB列:

<cfquery name="enter_question" datasource="#dsn#">
    INSERT INTO xx_questions(q_id,
        q_name,
        q_narrative,
        q_used,
        q_type)
    VALUES(
        <cfqueryparam value="#variables.new_q_id#" CFSQLType="CF_SQL_INTEGER">,
        <cfqueryparam value="#form.q_name#" CFSQLType="CF_SQL_VARCHAR">,
        <cfqueryparam value="#form.q_narrative#" CFSQLType="CF_SQL_VARCHAR">,
        <cfqueryparam value="n" CFSQLType="CF_SQL_CHAR">,
        <cfqueryparam value="#form.q_type#" CFSQLType="CF_SQL_INTEGER">
        )
</cfquery>
你需要使用。查看以下位置的文档:

尝试以下方法您应该更改CFSQLType以匹配您的DB列:

<cfquery name="enter_question" datasource="#dsn#">
    INSERT INTO xx_questions(q_id,
        q_name,
        q_narrative,
        q_used,
        q_type)
    VALUES(
        <cfqueryparam value="#variables.new_q_id#" CFSQLType="CF_SQL_INTEGER">,
        <cfqueryparam value="#form.q_name#" CFSQLType="CF_SQL_VARCHAR">,
        <cfqueryparam value="#form.q_narrative#" CFSQLType="CF_SQL_VARCHAR">,
        <cfqueryparam value="n" CFSQLType="CF_SQL_CHAR">,
        <cfqueryparam value="#form.q_type#" CFSQLType="CF_SQL_INTEGER">
        )
</cfquery>

包含用户输入的每个查询都应该有如下cfqueryparam:

<cfquery name="enter_question" datasource="#dsn#">
INSERT INTO xx_questions(q_id,
                      q_name,
                  q_narrative,
                  q_used,
                  q_type)

VALUES(           
       <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#variables.new_q_id#"/>,
       <cfqueryparam cfsqltype="CF_SQL_CHAR"    value="#form.q_name#"/>,
       <cfqueryparam cfsqltype="CF_SQL_CHAR" value="#form.q_narrative#"/>,
       <cfqueryparam cfsqltype="CF_SQL_CHAR" value="n"/>,
       <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#form.q_type#"/>)
</cfquery>

。。。或者,如果数据是可预测的,则可以根据已知的允许输入列表检查每个用户输入。如果可能的话,这些技术应该成为您最佳实践列表的一部分:

每个包含用户输入的查询都应该有cfqueryparam,如下所示:

<cfquery name="enter_question" datasource="#dsn#">
INSERT INTO xx_questions(q_id,
                      q_name,
                  q_narrative,
                  q_used,
                  q_type)

VALUES(           
       <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#variables.new_q_id#"/>,
       <cfqueryparam cfsqltype="CF_SQL_CHAR"    value="#form.q_name#"/>,
       <cfqueryparam cfsqltype="CF_SQL_CHAR" value="#form.q_narrative#"/>,
       <cfqueryparam cfsqltype="CF_SQL_CHAR" value="n"/>,
       <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#form.q_type#"/>)
</cfquery>

。。。或者,如果数据是可预测的,则可以根据已知的允许输入列表检查每个用户输入。如果可能的话,这些技术应该成为您最佳实践列表的一部分:

你需要用我想的,但我以前从未用过。你能帮我看一下如何使用这个代码吗?然后我就可以把它应用到我代码中的其他地方了。更多信息请参见我的答案Craig。cfqueryparam不会保护您免受XSS的攻击-只会保护您免受SQLi的攻击。出于好奇,您是否使用数据库序列来获取变量。新的\u q\u id?您使用的是哪个版本的CF,@Craig24?您需要使用这正是我所想的,但我以前从未使用过它。你能帮我看一下如何使用这个代码吗?然后我就可以把它应用到我代码中的其他地方了。更多信息请参见我的答案Craig。cfqueryparam不会保护您免受XSS攻击-只会保护您免受SQLi攻击。出于好奇,您是否使用数据库序列获取变量。新的\u q\u id?您使用的是哪一版本的CF,@Craig24?