ホームページ  >  記事  >  バックエンド開発  >  PHP の 8 つの主要なセキュリティ機能の分析

PHP の 8 つの主要なセキュリティ機能の分析

伊谢尔伦
伊谢尔伦オリジナル
2016-11-24 14:29:251149ブラウズ

現代のインターネットでは、世界中のユーザーから入力データを取得する必要があることがよくあります。ただし、「ユーザーが入力したデータを決して信頼してはいけない」ことは誰もが知っています。そのため、さまざまな Web 開発言語では、ユーザー入力データのセキュリティを確保するための関数が提供されています。 PHP には、Web サイトで SQL インジェクション攻撃や XSS 攻撃などの問題を防ぐのに役立つ、非常に便利な関数がいくつかあります。もちろん、PHP コードを作成するとき、IDE (PhpStorm や Zend Studio など) は開発者が確実に使用できるように関数を強調表示しますが、これらの関数やコードを保護するためにコード難読化ツール (Zend Guard など) を使用する人もいます。 PHP 関数の使用と安全性を確保するために使用されます。今日は主に、これらの関数がどのように定義され、機能するかを見ていきます。

1. mysql_real_escape_string()

この関数は、一重引用符や二重引用符などの特殊文字に「バックスラッシュ」を追加するのに非常に役立ちます。クエリに安全に使用できます。ただし、この機能はデータベースに接続しているときに使用することに注意してください。

しかし現在、mysql_real_escape_string() 関数は基本的に必要なくなりました。すべての新しいアプリケーション開発では、データベースを操作するために PDO などのライブラリを使用する必要があります。つまり、既製のステートメントを使用して SQL インジェクション攻撃を防ぐことができます。

2.addslashes()

この関数は上記の mysql_real_escape_string() と非常に似ています。ただし、設定ファイルphp.iniのmagic_quotes_gpcの値が「on」の場合は、この機能を使用しないように注意してください。デフォルトでは、magic_quotes_gpc はオンになっており、すべての GET、POST、COOKIE データに対して addlashes() が自動的に実行されます。二重エスケープが発生するため、magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。この変数の値は、PHP の get_magic_quotes_gpc() 関数を通じて確認できます。

3. htmlentities()

この関数は、ユーザー入力データをフィルタリングするのに非常に便利です。たとえば、ユーザーが文字「<」を入力すると、この関数によって HTML エンティティ < に変換されるため、XSS および SQL インジェクション攻撃が防止されます。

4. htmlspecialchars()

HTML の一部の文字には特別な意味があり、そのような意味を反映したい場合、この関数は変換された文字列を返します。たとえば、「&」amp は次のようになります。に変換 '&'。

5.strip_tags()

この関数は、文字列からすべての HTML、JavaScript、および PHP タグを削除できます。もちろん、関数の 2 番目のパラメーターを設定して、特定のタグを表示することもできます。

6. md5()

一部の開発者は非常に単純なパスワードを保存しますが、これはセキュリティの観点からは良くありません。md5() 関数は指定された文字列の 32 文字の md5 ハッシュを生成する可能性があり、このプロセスは元に戻すことができません。 md5() の結果から元の文字列を取得することはできません。

7. sha1()

この関数は上記の md5() に似ていますが、異なるアルゴリズムを使用し、40 文字の SHA-1 ハッシュを生成します (md5 は 32 文字のハッシュを生成します)。

8. intval()

笑わないでください、これは安全関連の関数ではなく、変数を整数型に変換していることはわかっています。ただし、この関数を使用すると、特に ID や年齢などのデータを解析する場合に、PHP コードの安全性を高めることができます。


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