この記事の例では、PHP で SQL インジェクション防止を簡単に実装する方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:
ここには、主に php と mysql の組み合わせのためのフィルタリングはあまりありません。
一般的なインジェクション防止には、PHP の addlashes 関数を使用してください。
以下はコピーされたコードです:
PHP コード:
$_POST = sql_injection($_POST); $_GET = sql_injection($_GET); function sql_injection($content) { if (!get_magic_quotes_gpc()) { if (is_array($content)) { foreach ($content as $key=>$value) { $content[$key] = addslashes($value); } } else { addslashes($content); } } return $content; }
システムを構築している場合は、これもコピーされた次のコードを使用できます。
PHP コード:
function inject_check($sql_str) { return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤 } function verify_id($id=null) { if (!$id) { exit('没有提交参数!'); } // 是否为空判断 elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断 elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断 $id = intval($id); // 整型化 return $id; } function str_check( $str ) { if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开 $str = addslashes($str); // 进行过滤 } $str = str_replace("_", "\_", $str); // 把 '_'过滤掉 $str = str_replace("%", "\%", $str); // 把 '%'过滤掉 return $str; } function post_check($post) { if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开 $post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 } $post = str_replace("_", "\_", $post); // 把 '_'过滤掉 $post = str_replace("%", "\%", $post); // 把 '%'过滤掉 $post = nl2br($post); // 回车转换 $post = htmlspecialchars($post); // html标记转换 return $post; }
PHP 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください:「php プログラミング セキュリティ チュートリアル」、「php セキュリティ フィルタリング スキルの概要」、「PHP の操作とオペレータ」使用法の概要」、「PHP ネットワーク プログラミング スキルの概要」、「PHP 基本構文の入門チュートリアル」、「PHP Office ドキュメント スキルの概要 (Word、Excel、Access、PPT を含む)」、「PHP オブジェクト指向の入門チュートリアル」プログラミング』、『php 文字列の使い方のまとめ』、『PHP+MySQL データベース操作の入門チュートリアル』、『一般的な PHP データベース操作スキルのまとめ』
この記事が、PHP プログラミングに携わる皆様のお役に立てれば幸いです。
上記では、SQL インジェクション防止を PHP で簡単に実装する方法を、SQL と PHP の内容を含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。