ホームページ データベース mysql チュートリアル SQL注入技术和跨站脚本攻击的检测(1)_MySQL

SQL注入技术和跨站脚本攻击的检测(1)_MySQL

Jun 01, 2016 pm 01:56 PM
安全性 アプリケーション層 開発者

1、概述  

  在这两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循安全代码进行开发,攻击者将通过80端口进入你的系统。

广泛被使用的两个主要攻击技术是SQL注入[ref1]和CSS[ref2]攻击。SQL注入是指:通过互联网的输入区域,插入SQL meta-characters(特殊字符 代表一些数据)和指令,操纵执行后端的SQL查询的技术。这些攻击主要针对其他组织的WEB服务器。CSS攻击通过在URL里插入script标签,然后 诱导信任它们的用户点击它们,确保恶意JavaScript代码在受害人的机器上运行。这些攻击利用了用户和服务器之间的信任关系,事实上服务器没有对输入、输出进行检测,从而未拒绝JavaScript代码。

  这篇文章讨论SQL注入和CSS攻击漏洞的检测技术。网上已经有很多关于这两种基于WEB攻击的讨论,比如如何实施攻击,他们的影响,怎样更好的编制和设计程序防止这些攻击。 然而, 对如何检测这些攻击并没有足够的讨论。我们采用流行的开源的IDS Snort[ref 3],组建根据检测这些攻击的规则的正则表达式。附带,Snort默认规则设定包含检测CSS的方法,但是这些容易被避开检测。比如大多通过hex进制编码,如%3C%73%63%72%69%70% 74%3E代替<script>避开检测。 </script>

依赖level of paranoia组织的能力,我们已经编写了多种检测相同攻击的规则。如果你希望检测各种可能的SQL注入攻击,那么你需要简单的留意任何现行的SQL meta-characters,如单引号,分号和双重破折号。同样的一个极端检测CSS攻击的方法,只要简单地提防HTML标记的角括号。但这样会检测 出很多错误。为了避免这些,这些规则需要修改使它检测更精确些, 当仍然不能避免错误。

  在Snort规则中使用pcre(Perl Compatible Regular Expressions)[ref4]关键字,每个规则可以带或不带其他规则动作。这些规则也可以被公用软件如grep(文档搜索工具)使用,来审阅网络服务器日志。 但是,需要警惕的是,用户的输入只有当以GET提交请求时,WEB服务器才会记录日记,如果是以POST提交的请求在日记中是不会记录的。 

  2. SQL注入的正则表示式

  当 你为SQL注入攻击选择正则表示式的时候,重点要记住攻击者可以通过提交表单进行SQL注入,也可以通过Cookie区域。你的输入检测逻辑应该考虑用户 组织的各类型输入(比如表单或Cookie信息)。并且如果你发现许多警告来自一个规则,请留意单引号或者是分号,也许些字符是你的Web应用程序创造的 合法的在CookieS中的输入。因此, 您需要根据你的特殊的WEB应用程序评估每个规则。

  依照前面提到,一个琐细的检测SQL射入攻击的正则表达式要留意SQL特殊的meta-characters 譬如单引号(’)双重扩则号(--),为了查出这些字符和他们hex等值数, 以下正则表达式适用: 

  2.1 检测SQL meta-characters的正则表达式
/(/%27)|(/’)|(/-/-)|(/%23)|(#)/ix

  解释:

  我 们首先检查单引号等值的hex,单引号本身或者双重扩折号。这些是MS SQL Server或Oracle的字符, 表示后边的为评论, 随后的都将被忽略。 另外,如果你使用MySQL,你需要留意 ’#’和它等值的hex的出现。注意我们不需要检查双重破折号等值的hex, 因为这不是HTML meta-character, 浏览器不会进行编码。 并且, 如果攻击者设法手工修改双重破折号为它的hex值%2D(使用代理像Achilles[ref 5]), SQL注入将失败。 
加入上述正则表达式的新的Snort规则如下: 

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"SQL Injection - Paranoid"; flow:to_server,established;uricontent:".pl";pcre:"/(/%27)|(/’)|(/-/-)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)

在本篇讨论中, uricontent关键字的值为".pl ", 因为在我们的测试环境里, CGI 程序是用Perl写的。uricontent关键字的值取决于您的特殊应用, 这个值也许是".PHP ", 或" .ASP ", 或" .JSP ", 等。 从这点考虑, 我们不显示对应的Snort 规则, 但是我们会给出创造这些规则的正则表达式。 通过这些正则表达式你可以很简单的创造很多的Snort规则.在前面的正则表达式里, 我们检测双重破折号是因为:即便没有单引号的存在那里也可能是SQL射入点[ref 6]。 例如, SQL查询条目只包含数值,如下: 

select value1, value2, num_value3 from database 
where num_value3=some_user_supplied_number 

  这种情况,攻击者可以执行额外的SQL查询, 示范提交如下输入: 

  3; insert values into some_other_table 

  最后, pcre的修饰符’ i’ 和’ x ’ 是用于分别匹配大小写和忽略空白处的。 上面的规则也可以另外扩展来检查分号的存在。然而,分号很可以是正常HTTP应答的一部分。为了减少这种错误,也是为了任何正常的单引号和双重扩折号的出现,上面的规则应该被修改成先检测=号的存。用户输入会响应一个GET或POST请求,一般输入提交如下:

  username=some_user_supplied_value&password=some_user_supplied_value 

  因此, SQL 注入尝试将导致用户的输入出现在a = 号或它等效的hex值之后。

  2.2 修正检测SQL meta-characters的正则表达式 

  /((/%3D)|(=))[^/n]*((/%27)|(/’)|(/-/-)|(/%3B)|(:))/i

  解释:

  这个规则首先留意 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的任意字符,最后检测单引号,双重破折号或分号。

  典型的SQL注入会尝试围绕单引号的用途操作原来的查询,以便得到有用的价值。讨论这个攻击一般使用1’or’1’=’1字符串. 但是, 这个串的侦查很容易被逃避,譬如用1’or2>1 --. 然而唯一恒定的部分是最初的字符的值,跟随一单引号,再加’or’。随后的布尔逻辑可能在一定范围上变化,可以是普通样式也可能是非常复杂的。这些攻击可 以相当精确被侦测,通过以下的正则表达式。2.3章节讲解

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows11セキュリティセンターをオフにする方法を詳しく解説 Windows11セキュリティセンターをオフにする方法を詳しく解説 Mar 27, 2024 pm 03:27 PM

Windows 11 オペレーティング システムでは、セキュリティ センターは、ユーザーがシステムのセキュリティ状態を監視し、マルウェアから防御し、個人のプライバシーを保護するのに役立つ重要な機能です。ただし、特定のソフトウェアをインストールするときやシステム チューニングを実行するときなど、ユーザーがセキュリティ センターを一時的にオフにする必要がある場合があります。この記事では、システムを正しく安全に運用するために、Windows 11 セキュリティ センターをオフにする方法を詳しく紹介します。 1. Windows 11 セキュリティ センターをオフにする方法 Windows 11 では、セキュリティ センターをオフにしても、

AI の新たな世界の課題: セキュリティとプライバシーはどうなったのでしょうか? AI の新たな世界の課題: セキュリティとプライバシーはどうなったのでしょうか? Mar 31, 2024 pm 06:46 PM

生成 AI の急速な発展により、プライバシーとセキュリティに関して前例のない課題が生じ、規制介入が緊急に求められています。先週、私はワシントン D.C. で一部の議員およびそのスタッフと AI のセキュリティ関連の影響について話し合う機会がありました。今日の生成 AI は、基礎研究、潜在的な可能性、学術的用途を備えた 1980 年代後半のインターネットを思い出させますが、まだ一般向けの準備は整っていません。今回は、マイナーリーグのベンチャーキャピタルによって刺激され、Twitter のエコーチェンバーに触発された、野放しのベンダーの野心が、AI の「すばらしい新世界」を急速に前進させています。 「パブリック」基本モデルには欠陥があり、消費者および商用利用には適さない; プライバシー抽象化が存在する場合、ふるいのように漏洩する; 攻撃対象領域のためセキュリティ構造は重要である

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Jun 04, 2024 pm 02:53 PM

Java フレームワーク設計では、セキュリティ ニーズとビジネス ニーズのバランスをとることでセキュリティを実現し、主要なビジネス ニーズを特定し、関連するセキュリティ要件に優先順位を付けます。柔軟なセキュリティ戦略を策定し、脅威に階層的に対応し、定期的に調整します。アーキテクチャの柔軟性を考慮し、ビジネスの進化をサポートし、抽象的なセキュリティ機能を考慮します。効率と可用性を優先し、セキュリティ対策を最適化し、可視性を向上させます。

PHP セキュリティのベスト プラクティスを実装する方法 PHP セキュリティのベスト プラクティスを実装する方法 May 05, 2024 am 10:51 AM

PHP セキュリティのベスト プラクティスを実装する方法 PHP は、動的でインタラクティブな Web サイトの作成に使用される最も人気のあるバックエンド Web プログラミング言語の 1 つです。ただし、PHP コードはさまざまなセキュリティ脆弱性に対して脆弱になる可能性があります。 Web アプリケーションをこれらの脅威から保護するには、セキュリティのベスト プラクティスを実装することが重要です。入力検証 入力検証は、ユーザー入力を検証し、SQL インジェクションなどの悪意のある入力を防止するための重要な最初のステップです。 PHP は、filter_var() や preg_match() などのさまざまな入力検証関数を提供します。例: $username=filter_var($_POST['username'],FILTER_SANIT

Struts 2 フレームワークのセキュリティ構成と強化 Struts 2 フレームワークのセキュリティ構成と強化 May 31, 2024 pm 10:53 PM

Struts2 アプリケーションを保護するには、次のセキュリティ構成を使用できます。 未使用の機能を無効にする コンテンツ タイプ チェックを有効にする 入力を検証する セキュリティ トークンを有効にする CSRF 攻撃を防ぐ RBAC を使用してロールベースのアクセスを制限する

C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス C++ での機械学習アルゴリズムの実装: セキュリティに関する考慮事項とベスト プラクティス Jun 01, 2024 am 09:26 AM

C++ で機械学習アルゴリズムを実装する場合、データ プライバシー、モデルの改ざん、入力検証などのセキュリティを考慮することが重要です。ベスト プラクティスには、安全なライブラリの採用、権限の最小化、サンドボックスの使用、継続的な監視が含まれます。実際のケースでは、Botan ライブラリを使用して CNN モデルを暗号化および復号化し、安全なトレーニングと予測を確保する方法を示します。

SHIBコインにとってより安全なウォレットはどれですか? (初心者の方は必ずお読みください) SHIBコインにとってより安全なウォレットはどれですか? (初心者の方は必ずお読みください) Jun 05, 2024 pm 01:30 PM

SHIBコインは、投資家にとってもはや馴染みのないものではありませんが、市場の発展に伴い、SHIBの現在の市場価値は12位にランクされており、数え切れないほどの投資を集めていることがわかります。 . 投資家が投資に参加します。過去に、市場では頻繁に取引やウォレットのセキュリティに関するインシデントが発生しており、多くの投資家は、現時点でどのウォレットがSHIBコインを保管するのが安全なのか疑問に思っています。市場データの分析によると、比較的安全なウォレットは主に OKXWeb3Wallet、imToken、MetaMask ウォレットです。次に、これらについて編集者が詳しく説明します。 SHIBコインにとってより安全なウォレットはどれですか?現在、SHIBコインはOKXWeに置かれています

Windows セキュリティ センターでリアルタイム保護をオフにするためのヒント Windows セキュリティ センターでリアルタイム保護をオフにするためのヒント Mar 27, 2024 pm 10:09 PM

今日のデジタル社会において、コンピューターは私たちの生活に欠かせないものとなっています。 Windows は最も人気のあるオペレーティング システムの 1 つとして、世界中で広く使用されています。しかし、ネットワーク攻撃手法がエスカレートし続けるにつれ、パーソナル コンピュータのセキュリティを保護することが特に重要になってきています。 Windows オペレーティング システムは一連のセキュリティ機能を提供しますが、その重要なコンポーネントの 1 つが「Windows セキュリティ センター」です。 Windows システムでは、「Windows セキュリティ センター」が役に立ちます。

See all articles