6

私はしばらくの間、ColdFusionでプレーンフォームと入力フィールドを使用してきましたが、最近、cfinputタグが自動的にいくつかのxss攻撃を防ぐことがわかりました。これにより、ColdFusionで通常のフォームおよび入力タグよりもcffromおよびcfinputを使用することに不利な点があるかどうか疑問に思いました。

私がそれを調べて短時間で見つけた唯一の欠点は、2つの外部スタイルシートと1つのスクリプトタグがページに追加されることです。

要するに:

コールドフュージョンでFORMよりもCFFORMを使用することの長所と短所は何ですか?

4

4 に答える 4

10

私は自分のフォームの周りに独自の JS を書くことを好みます。私は cfform から始めましたが、最終的には cfform が処理できるよりも堅牢なこと (検証など) を実行したいと考えました。そのため私は JS を学ばざるを得なくなり、それ以来、自分の JS を書くことにとても満足しています。

したがって、大きな欠点の 1 つは、cfform が処理できるものに制限されていることだと思います。状況によっては、それで問題ない場合があります。

私がかなり前に遭遇したもう 1 つの欠点 (公平を期すために、その後対処された可能性があります) は、cfform によって生成された JS が私の手書きの JS と競合または干渉することです。

それは確かに好みに帰着します。cfform や通常のフォームを使用することは、「正しい」ことでも「間違っている」ことでもありません。私にとっては、制限/制限がないため、手動で行う必要がある操作をすべて実行できることを好みます。

于 2011-06-07T19:35:41.827 に答える
5

<cfform>私は&との愛憎関係を持ってい<cfinput>ます。

CFFORMが提供するのと同じxss保護を使用するには、次のように通常のvalue = ""でhtmlEditFormat()をラップします。

<input name="x" value="#htmlEditFormat(x)#">

XSS保護をさらに強化するには、OWASP Enterprise Security API(CF9最新の修正プログラムの1つに含まれている.jar)を使用します。

JSを記述せずに簡単にajaxifiedフォームを作成する方法は気に入っていますが、それが多くの醜いJavaScriptを生成し、かなり単純なもののために多くのJSファイルとcssファイルをロードする方法は嫌いです。そのため、cfformを内部サイトにのみ使用し、公開サイトには使用しないことにしました(パフォーマンスの問題)。

ajax機能以外に、checkedCFブール値を受け入れ、selectにクエリオブジェクトを入力する属性は、非常に便利な機能でcfinputあり、提供する機能です。cfselect

適切な仕事に適切なツールを使用してください。の機能が便利だと思ったら<cfform>、それを使ってください。その限界を知って、自分で決めてください。

于 2011-06-07T19:51:43.700 に答える
4

私は ColdFusion をほぼ 14 年間使用しています。CF が非常に優れた製品である理由は、新しいユーザーがあまり理解していなくても多くの作業を迅速に完了できるようにし、ロケット科学者が非常に強力で安全なアプリケーションを迅速に構築できるようにするためです。

CFFFORM、CFINPUT、CFLAYOUT、CFPOD は、新規ユーザー用に作成されたタグです。基本的に、補助輪です。Web 開発に慣れていない場合は、このタグを試してみてください。経験を積むにつれて、これらのタグを削除し、他の手法に移行して、より堅牢なアプリケーションを作成したくなるでしょう。

補助輪に問題がないように、これらのタグにも問題はありません。各ジョブに適切なツールがあることを知っておく必要があります。実際には、それぞれの仕事に適したツールがたくさんあります。

現在、外部 Web サイトを構築する ColdFusion 9 / jQuery / SQL Server イントラネットを開発しています。単一のフォームタグを使用せずに実行しています。そして、私はそれを完全に CFSCRIPT で行っています。うわあ!

jQuery を使用すると、フォームは必要ありません。入力が必要なだけです。CFSCRIPT で入力を作成する方法を次に示します。

<cfscript>
Options = "";
for (i = 1; i lte 10; i++) {
  Options = Options & wrapOption("Some choice #i# ", i);
}
SelectBox = wrapSelect(Options, "MySelectID");
writeOutput(SelectBox);
SecretDiv = wrapDiv("", "", "MyDivID");
writeOutput(SecretDiv);
</cfscript>

HTML を作成するためのユーザー定義関数は、UDF_Library.cfm ファイルにあります。

// WRAP SELECT
function wrapSelect(SelectContent, Class, ID) {
    LOCAL.SelectContent = ARGUMENTS.SelectContent;
    LOCAL.Properties = "";
    // CLASS
    if (isDefined("ARGUMENTS.Class")) {
        LOCAL.Properties = LOCAL.Properties & " class='#ARGUMENTS.Class#'";
    }
    // ID
    if (isDefined("ARGUMENTS.ID")) {
        LOCAL.Properties = LOCAL.Properties & " id='#ARGUMENTS.ID#'";
    }
    LOCAL.Item = "<select #LOCAL.Properties#>#LOCAL.SelectContent#</select>";
    return LOCAL.Item;
}
// WRAP OPTION
function wrapOption(Content, Value, Selected) {
    LOCAL.Content = ARGUMENTS.Content;
    LOCAL.Properties = " value='#ARGUMENTS.Value#'";
    // SELECTED
    if (isDefined("ARGUMENTS.Selected") and (ARGUMENTS.Selected eq "selected")) {
        LOCAL.Properties = LOCAL.Properties & " selected";
    }
    LOCAL.Item = "<option #LOCAL.Properties#>#LOCAL.Content#</option>";
    return LOCAL.Item;
}
// CREATE DIV
function wrapDiv(Content, Class, ID) {
    LOCAL.Properties = "";
    // CLASS
    if (isDefined("ARGUMENTS.Class")) {
        LOCAL.Properties = LOCAL.Properties & " class='#ARGUMENTS.Class#'";
    }
    // ID
    if (isDefined("ARGUMENTS.ID")) {
        LOCAL.Properties = LOCAL.Properties & " id='#ARGUMENTS.ID#'";
    }
    LOCAL.Item = "<div #LOCAL.Properties#>#ARGUMENTS.Content#</div>";
    return LOCAL.Item;
}

私は jQuery を使用し、すべての要素をそのクラスまたは ID で参照します。これを行うと、次のように各要素のデータを ajax 呼び出しに送信できます。

<script type="text/javascript">
$(document).ready(function() {
$("#MySelectID").change(function() {
   MyID = $("#MySelectID").val();
   $("#MySecretDiv").load("CoolQuery.cfm?UserID"+MyID);
});


});
</script>

要点は、CFFORM と CFINPUT を使用している限り、本当に強力な jQuery のすべてを実行できるわけではないということです。ただし、開始するにはこれらのタグが必要です。

2012 年は、ColdFusion と jQuery のパワーにとって飛躍の年になるでしょう!!!

幸運を!

于 2011-08-19T23:54:34.737 に答える
1

ColdFusion の CFInput を長い間使用していません。jQuery Validation プラグインを使用して、次のような他のもので検証を実行できるようにしました。

  • 要素は表示されていますか?(つまり、必須でない場合はセクションを非表示にしますが、表示されていない場合は要件を削除します)。
  • チェックボックスはチェックされていますか?(つまり、「その他」にチェックを入れたので、空欄を埋める必要があります。)
  • 有効な日付/時刻値ですか? (つまり、これを支援するために DateJS ライブラリを追加で使用します)
  • ajax クエリを実行して、ユーザー名が一意かどうかを判断します
  • 入力した URL は有効ですか?
  • password1 と password2 を比較する
  • ものの組み合わせに基づくカスタム ルール

ほとんどの検証ルールは、クラス パラメータにインラインで追加できます。

<input type="text" name="Name" class="required">
<input type="text" name="Birthdate" class="required date">
<input type="text" name="Email" class="required email">
<input type="text" name="Website" class="url">

これと同じロジックを非 ColdFusion ベースのフォームに追加する必要があり、CFInput が ColdFusion 専用タグであるという事実を心配する必要がないため、私は jQuery を使用することを好みます。

jQuery Validation ライブラリに関する詳細情報へのリンクは次のとおりです。

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

于 2011-06-08T20:22:15.023 に答える