3
4

6 に答える 6

4

あなたが正しかった最初の部分:

<configsections>
    <sectionGroup name="system.web">
    <section name="sanitizer" requirePermission="false" type="AjaxControlToolkit.Sanitizer.ProviderSanitizerSection,  AjaxControlToolkit" />
    </sectionGroup>
</configsections>

あなたのsystem.web

<system.web>
    <sanitizer defaultProvider="AntiXssSanitizerProvider">
        <providers>
          <add name="AntiXssSanitizerProvider" type="AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider" />
        </providers>
      </sanitizer>
</system.web>

html:

 <asp:Textbox ID="replyBody" Height="400px" Width="892px" runat="server" TextMode ="MultiLine"  />
 <ajaxToolkit:HtmlEditorExtender ID="replyBody_HtmlEditorExtender" runat="server" Enabled="True" OnImageUploadComplete="saveFile"  ClientIDMode="AutoID" EnableSanitization="true"  TargetControlID="replyBody">
 <Toolbar>
     <ajaxToolkit:Bold />
     <ajaxToolkit:Italic />
     <ajaxToolkit:Underline />
     <ajaxToolkit:StrikeThrough />
     <ajaxToolkit:Subscript />
     <ajaxToolkit:Superscript />
     <ajaxToolkit:JustifyLeft />
     <ajaxToolkit:JustifyCenter />
     <ajaxToolkit:JustifyRight />
     <ajaxToolkit:JustifyFull />
     <ajaxToolkit:InsertOrderedList />
     <ajaxToolkit:InsertUnorderedList />
     <ajaxToolkit:CreateLink />
     <ajaxToolkit:UnLink />
     <ajaxToolkit:RemoveFormat />
     <ajaxToolkit:Cut />
     <ajaxToolkit:Copy />
     <ajaxToolkit:Paste />
     <ajaxToolkit:BackgroundColorSelector />
     <ajaxToolkit:ForeColorSelector />
     <ajaxToolkit:FontNameSelector />
     <ajaxToolkit:FontSizeSelector />
     <ajaxToolkit:Indent />
     <ajaxToolkit:Outdent />
     <ajaxToolkit:InsertHorizontalRule />
     <ajaxToolkit:HorizontalSeparator />
     <ajaxToolkit:InsertImage />
 </Toolbar>
 </ajaxToolkit:HtmlEditorExtender>

画像の場所の設定に関しては、AjaxControlToolkit.AjaxFileUploadEventArgs

プロパティはe.FileName、ファイル名を取得し、e.postedUrlアップロードした場所をコントロールに伝えるためのものであり、以下に示すように実行できます。

protected void saveFile(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    string fullPath = "/Images/Upload_test/"+ e.FileName;

    // Save your File
    replyBody_HtmlEditorExtender.AjaxFileUpload.SaveAs(Server.MapPath(fullPath));

    // Tells the HtmlEditorExtender where the file is otherwise it will render as: <img src="" />
    e.PostedUrl = fullPath;
}

それは私にとって非常にうまくいきました。

于 2012-09-28T07:13:16.953 に答える
0

私はまったく同じ問題に直面しており、何日もそれをいじっていました。

少なくとも私は今、最初の成功を収めました。私はこのガイドに従っていました: http://www.asp.net/web-forms/tutorials/ajax-control-toolkit/getting-started/using-ajax-control-toolkit-controls-and-control-extenders-cs

私にとって最も重要な手順を書き留めています。

  • Web フォーム プロジェクトを作成する
  • NuGet を使用してインストールするか、手動でインストールするかは問題ではありません (NuGet を介してインストールし、ツールボックス エントリをプロジェクトのパッケージ フォルダー内の dll にリンクしました)。
  • プロジェクトの web.config で何も修正しませんでした (ただし、次のステップの 1 つとしてサニタイズを確認する必要があります)。
  • ajax コントロール ツールキットではなく、ASP スクリプト マネージャーを使用します。

だから、これが実際に私のために働く私のスニペットです(少なくとも今のところ、スティーブンスのPCに依存しないものを見ることは今のところ成功です^^)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="webforms._Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor" TagPrefix="cc1" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>hey ho</title>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      hello world!
    </div>
    <div>
      second div
      <br/>
      <asp:ScriptManager ID="ScriptManager1" runat="server">
      </asp:ScriptManager>
      <cc1:Editor ID="Editor1" runat="server" />
    </div>
  </form>
</body>
</html>
于 2012-07-13T15:38:13.570 に答える
0

Ajax HtmlEditorExtender を構成するのは非常に困難な作業でしたが、このリンク: http://stephenwalther.com/archive/2012/05/01/ajax-control-toolkit-may-2012-release.aspxは、画像のアップロードを設定する方法を案内します。パスおよびその他の関連設定

次の問題は、XSS 攻撃から保護するためにサニタイザーをセットアップする方法でした。実際、推奨されるサニタイザー プロバイダーは正しく機能しません。そのために私が何をしたか見てください

  1. Microsoft CodePlex または NuGet から AntiXSS.4.2.1 をダウンロードします。
  2. zip ファイルを解凍すると、2 つの .dll が取得されます。
  3. using Microsoft.Security.Application;コード ビハインド ページに追加します。
  4. ここで、htmleditor で入力を取得して表示する任意のボタンのクリック イベントで、以下のコードを使用します。

ここで、txteditor は、htmleditor にリンクされている asp:textbox の ID です。テキストボックスの入力は常にセキュリティのために.netフレームワークによってエンコードされるため、最初に入力htmlテキストをデコード<br>し、タグを自分の単語に置き換えてから、入力をサニタイザーに転送してXSS攻撃コードを削除しますが、残念ながらそのようなhtmlコードも削除し<br>, <img src=""/> or <a href=""></a>ますここでタグを置き換えて、<br>サニタイズされた html を再度デコードし、単語を対応するタグに置き換えます。これで、div1 に表示されているように、どこでも html を表示できます。これらの情報だと思います。さらなるステップであなたを助けることができます。

String x = HttpUtility.HtmlDecode(txteditor.Text).Replace("<br>", "rrrbbbbrbrbrbrbr"); 
String y = Sanitizer.GetSafeHtmlFragment(x); 
div1.InnerHtml = HttpUtility.HtmlDecode(y).Replace("rrrbbbbrbrbrbrbr", "<br>"); 
txteditor.Text = HttpUtility.HtmlDecode(y).Replace("rrrbbbbrbrbrbrbr", "<br>");

次のように、デフォルトのサニタイザーを false にします。

    <ajaxToolkit:HtmlEditorExtender ID="ajaxeditor" OnImageUploadComplete="ajaxFileUpload_OnUploadComplete" TargetControlID="txteditor" DisplaySourceTab="false" EnableSanitization="false" Runat="server" >

web.config で何も構成する必要はなく、www.asp.net で推奨されている 3 つの .dll を追加する必要もありません。

于 2012-07-13T16:59:07.663 に答える
0

いじめっ子が上で示唆したように、スクリプト マネージャーが必要になります。ただし、ajax ツール キットのスクリプト マネージャーが必要です。私が見つけたもう 1 つのことは、ファイルを正しくアップロードするには、web.config に正しい設定を配置する必要があることです。「セキュリティ」と「ハンドラー」の両方の設定が必要です。

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd"type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
    </handlers>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="4294967295" />
      </requestFiltering>
    </security>
  </system.webServer>
于 2014-11-21T15:47:32.897 に答える
0

これをfalseに設定すると、私の場合に役立ちましたEnableSanitization="false".

于 2012-10-10T13:48:26.507 に答える
-1

htmleditorextender コードで画像をアップロードする

    protected void htmleditorextender_ImageUploadComplete(object sender, AjaxFileUploadEventArgs e)
       {
           string fullpath = Server.MapPath("~/images/") + e.FileName;

           editor_extender.AjaxFileUpload.SaveAs(fullpath);

           e.PostedUrl = Page.ResolveUrl("~/images/" + e.FileName);
       }
于 2013-02-03T07:57:54.100 に答える