« beforeトリガとafterトリガの違いは? | メイン | Summer '11とJavaScript Remoting for Apex Controller »

2011年4月26日 (火)

SOQLインジェクションとXSSへの対策方法

○SOQLインジェクション

Salesforceでは、一般のWebサイトと同様に、SOQL内でバインド変数を使用することで、SOQLインジェクションの対策が可能です。

// :name がバインド変数
result = [Select Id From Contact Where Name Like :name];

動的にSOQLを記述する必要がある場合は、StringのescapeSingleQuotesメソッドで、シングルクォーテーションをエスケープして対策します。

// OK
String query = 'Select Id From Contact Where Name Like \'' + String.escapeSingleQuotes(name) + '\'';
result = Database.query(query);

// NG
String query = 'Select Id From Contact Where Name Like \'' + name + '\'';
result = Database.query(query);

○XSS

Salesforceでは、<apex>タグで記述した部分はXSS対策がされます
<apex>タグのescape属性がデフォルトでtrueに設定されているため、自動的にHTMLエスケープされます。
※ escape属性をfalseに指定した場合は、XSS対策がされなくなります。

<apex>タグで記述していない部分のHTMLやJavaScriptについては、一般のWebサイトと同様の方法で、自分でXSS対策を行う必要があります。

<参考>
Developerforce 「Security Tips for Apex and Visualforce Developers」

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

採用情報

株式会社フレクトでは、事業拡大のため、
・Salesforce/Force.comのアプリケーション開発
・HerokuやAWSなどのクラウドプラットフォーム上
でのWebアプリケーション開発
エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみたい方、
是非ご応募下さい。

フレクト採用ページへ

会社紹介

  • 株式会社フレクトは、
      ・認定コンサルタント
      ・認定上級デベロッパー
      ・認定デベロッパー
    が在籍している、セールスフォースパートナーです。
    また、heroku partnersにも登録されています。
    herokuパートナー
    株式会社フレクト
    Salesforce/Force.com
    導入支援サービス
    弊社の認定プロフェッショナルが支援致します。
    ・Visualforce/Apexによるアプリ開発
    ・Salesforceと連携するWebアプリ開発
    も承っております。
    セールスフォースご検討の際は、
    お気軽にお問合せください。

Twitter

リファレンス

■Developer's Guide(リファレンス)
・Apex  HTML | PDF | 日本語PDF | ガバナ制限
・Visualforce  HTML | PDF
・Web Services API  HTML | PDF | 日本語PDF
・Bulk API  HTML | PDF
・REST API  HTML | PDF | 日本語PDF
・Metadata API  HTML | PDF
・Migration Tool  HTML | PDF
・AJAX Toolkit  HTML | PDF
・Data Loader PDF | 日本語PDF

■早見表 (日本語)
数式
Apex
Visualforce
Web Services API
Chatter