<label id="6ic3i"></label>

        <li id="6ic3i"><legend id="6ic3i"></legend></li>
        \");\n echo(\"
        \");\n echo(\"<\/div>\");\n echo(\"<\/form><\/body><\/html>\");\n}<\/pre>\n

        ?<\/p>\n

        ご覧のとおり、リスト 1 のより危険なスクリプトは、セッション ディレクトリ內(nèi)のファイル (「セッション データの保護(hù)」を參照) や一部のシステム ファイル (たとえば、 \/etc\/passwd<\/code>)。デモンストレーションの目的で、この例ではユーザーがファイル名を入力できるテキスト ボックスを使用しますが、ファイル名はクエリ文字列で簡単に指定できます。 <\/p>\n

        ?<\/p>\n

        ユーザー入力とファイル システム アクセスの同時(shí)構(gòu)成は危険であるため、同時(shí)構(gòu)成を避けるためにデータベースを使用し、生成されたファイル名を非表示にするようにアプリケーションを設(shè)計(jì)することが最善です。ただし、これが常に機(jī)能するとは限りません。リスト 2 は、ファイル名を検証するためのサンプル ルーチンを示しています。正規(guī)表現(xiàn)を使用してファイル名に有効な文字のみが使用されていることを確認(rèn)し、特にドット文字 ..<\/code> をチェックします。 <\/p>\n

        ?<\/h5>\n
        リスト 2. 有効なファイル名文字のチェック<\/h5>\n
        function isValidFileName($file) {\n    \/* don't allow .. and allow any \"word\" character \\ \/ *\/\n    return preg_match('\/^(((?:\\.)(?!\\.))|\\w)+$\/', $file);\n}<\/pre>\n

        ?<\/h2>\n

        データベースを保護(hù)<\/h2>\n

        2008 年 4 月、米國の州矯正局は、クエリ文字列で SQL 列名を使用して機(jī)密データを漏洩しました。この侵害により、悪意のあるユーザーが表示する列を選択し、ページを送信し、データを取得することが可能になりました。この侵害は、アプリケーション開発者が予期できない方法でユーザーがどのように入力を?qū)g行できるかを示し、SQL インジェクション攻撃を防御する必要性を示しています。 <\/p>\n

        ?<\/p>\n

        リスト 3 は、SQL ステートメントを?qū)g行するサンプル スクリプトを示しています。この場合、SQL ステートメントは同じ攻撃を許可する動(dòng)的ステートメントです。このフォームの所有者は、列名を選択リストに制限しているため、フォームが安全であると考えている可能性があります。ただし、このコードには、フォームの不正行為に関する最後のヒントが 1 つ抜けています。コードがオプションをドロップダウン ボックスに制限しているからといって、他のユーザーが必要なコンテンツ (アスタリスク [*<\/code> を含む) を含むフォームを投稿できないというわけではありません。 ])。 <\/p>\n

        ?<\/h5>\n
        リスト 3. SQL ステートメントの実行<\/h5>\n
        \n\nSQL Injection Example<\/title>\n<\/head>\n<body>
        <h1><a href="http://www.miracleart.cn/">国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂</a></h1>\n<form id=\"myFrom\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\"\n    method=\"post\">\n<div><input type=\"text\" name=\"account_number\"\n    value=\"<?php echo(isset($_POST['account_number']) ? \n        $_POST['account_number'] : ''); ?>\" \/>\n<select name=\"col\">\n<option value=\"account_number\">Account Number<\/option>\n<option value=\"name\">Name<\/option>\n<option value=\"address\">Address<\/option>\n<\/select>\n<input type=\"submit\" value=\"Save\" name=\"submit\" \/><\/div>\n<\/form>\n<?php\nif ($_POST['submit'] == 'Save') {\n    \/* do the form processing *\/\n    $link = mysql_connect('hostname', 'user', 'password') or \n        die ('Could not connect' . mysql_error());\n    mysql_select_db('test', $link);\n\t\t\n\t\t$col = $_POST['col'];\n\n    $select = \"SELECT \" . $col . \" FROM account_data WHERE account_number = \" \n        . $_POST['account_number'] . \";\" ;\n    echo '<p>' . $select . '<\/p>';\n\n    $result = mysql_query($select) or die('<p>' . mysql_error() . '<\/p>');\n\n    echo '<table>';\n    while ($row = mysql_fetch_assoc($result)) {\n        echo '<tr>';\n        echo '<td>' . $row[$col] . '<\/td>';\n        echo '<\/tr>';\n    }\n    echo '<\/table>';\n\n    mysql_close($link);\n}\n?>\n<\/body>\n<\/html><\/pre>\n<p>?<\/p>\n<p>因此,要形成保護(hù)數(shù)據(jù)庫的習(xí)慣,請(qǐng)盡可能避免使用動(dòng)態(tài) SQL 代碼。如果無法避免動(dòng)態(tài) SQL 代碼,請(qǐng)不要對(duì)列直接使用輸入。清單 4 顯示了除使用靜態(tài)列外,還可以向帳戶編號(hào)字段添加簡單驗(yàn)證例程以確保輸入值不是非數(shù)字值。<\/p>\n<h5>?<\/h5>\n<h5>清單 4. 通過驗(yàn)證和 <code>mysql_real_escape_string()<\/code> 提供保護(hù)<\/h5>\n<pre class='brush:php;toolbar:false;'><html>\n<head>\n<title>SQL Injection Example<\/title>\n<\/head>\n<body>\n<form id=\"myFrom\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\"\n    method=\"post\">\n<div><input type=\"text\" name=\"account_number\"\n    value=\"<?php echo(isset($_POST['account_number']) ? \n        $_POST['account_number'] : ''); ?>\" \/> <input type=\"submit\"\n    value=\"Save\" name=\"submit\" \/><\/div>\n<\/form>\n<?php\nfunction isValidAccountNumber($number) \n{\n    return is_numeric($number);\n}\n\nif ($_POST['submit'] == 'Save') {\n\n    \/* Remember habit #1--validate your data! *\/\n    if (isset($_POST['account_number']) &&\n    isValidAccountNumber($_POST['account_number'])) {\n\n        \/* do the form processing *\/\n        $link = mysql_connect('hostname', 'user', 'password') or\n        die ('Could not connect' . mysql_error());\n        mysql_select_db('test', $link);\n\n        $select = sprintf(\"SELECT account_number, name, address \" .\n\t\t\" FROM account_data WHERE account_number = %s;\",\n        mysql_real_escape_string($_POST['account_number']));\n        echo '<p>' . $select . '<\/p>';\n\n        $result = mysql_query($select) or die('<p>' . mysql_error() . '<\/p>');\n\n        echo '<table>';\n        while ($row = mysql_fetch_assoc($result)) {\n            echo '<tr>';\n            echo '<td>' . $row['account_number'] . '<\/td>';\n            echo '<td>' . $row['name'] . '<\/td>';\n            echo '<td>' . $row['address'] . '<\/td>';\n            echo '<\/tr>';\n        }\n        echo '<\/table>';\n\n        mysql_close($link);\n    } else {\n        echo \"<span style=\\\"font-color:red\\\">\" .\n    \"Please supply a valid account number!<\/span>\";\n\n    }\n}\n?>\n<\/body>\n<\/html><\/pre>\n<p>?<\/p>\n<p>本例還展示了 <code>mysql_real_escape_string()<\/code> 函數(shù)的用法。此函數(shù)將正確地過濾您的輸入,因此它不包括無效字符。如果您一直依賴于 <code>magic_quotes_gpc<\/code>,那么需要注意它已被棄用并且將在 PHP V6 中刪除。從現(xiàn)在開始應(yīng)避免使用它并在此情況下編寫安全的 PHP 應(yīng)用程序。此外,如果使用的是 ISP,則有可能您的 ISP 沒有啟用 <code>magic_quotes_gpc<\/code>。<\/p>\n<p>?<\/p>\n<p>最 后,在改進(jìn)的示例中,您可以看到該 SQL 語句和輸出沒有包括動(dòng)態(tài)列選項(xiàng)。使用這種方法,如果把列添加到稍后含有不同信息的表中,則可以輸出這些列。如果要使用框架以與數(shù)據(jù)庫結(jié)合使用,則您的框架 可能已經(jīng)為您執(zhí)行了 SQL 驗(yàn)證。確保查閱文檔以保證框架的安全性;如果仍然不確定,請(qǐng)進(jìn)行驗(yàn)證以確保穩(wěn)妥。即使使用框架進(jìn)行數(shù)據(jù)庫交互,仍然需要執(zhí)行其他驗(yàn)證。<\/p>\n<h2>?<\/h2>\n<h2>保護(hù)會(huì)話<\/h2>\n<p>默認(rèn)情況下,PHP 中的會(huì)話信息將被寫入臨時(shí)目錄??紤]清單 5 中的表單,該表單將顯示如何存儲(chǔ)會(huì)話中的用戶 ID 和帳戶編號(hào)。<\/p>\n<h5>?<\/h5>\n<h5>清單 5. 存儲(chǔ)會(huì)話中的數(shù)據(jù)<\/h5>\n<pre class='brush:php;toolbar:false;'><?php\nsession_start();\n?>\n<html>\n<head>\n<title>Storing session information<\/title>\n<\/head>\n<body>\n<?php\nif ($_POST['submit'] == 'Save') {\n    $_SESSION['userName'] = $_POST['userName'];\n    $_SESSION['accountNumber'] = $_POST['accountNumber'];\n}\n?>\n<form id=\"myFrom\" action=\"<?php echo $_SERVER['PHP_SELF']; ?>\"\n    method=\"post\">\n<div><input type=\"hidden\" name=\"token\" value=\"<?php echo $token; ?>\" \/>\n<input type=\"text\" name=\"userName\"\n    value=\"<?php echo(isset($_POST['userName']) ? $_POST['userName'] : ''); ?>\" \/>\n<br \/>\n<input type=\"text\" name=\"accountNumber\"\n    value=\"<?php echo(isset($_POST['accountNumber']) ? \n    $_POST['accountNumber'] : ''); ?>\" \/>\n<br \/>\n<input type=\"submit\" value=\"Save\" name=\"submit\" \/><\/div>\n<\/form>\n<\/body>\n<\/html><\/pre>\n<p>?<\/p>\n<p>清單 6 顯示了 \/tmp 目錄的內(nèi)容。<\/p>\n<h5>?<\/h5>\n<h5>清單 6. \/tmp 目錄中的會(huì)話文件<\/h5>\n<pre class='brush:php;toolbar:false;'>-rw-------  1 _www    wheel       97 Aug 18 20:00 sess_9e4233f2cd7cae35866cd8b61d9fa42b<\/pre>\n<p>?<\/p>\n<p>正如您所見,在輸出時(shí)(參見清單 7),會(huì)話文件以非常易讀的格式包含信息。由于該文件必須可由 Web 服務(wù)器用戶讀寫,因此會(huì)話文件可能為共享服務(wù)器中的所有用戶帶來嚴(yán)重的問題。除您之外的某個(gè)人可以編寫腳本來讀取這些文件,因此可以嘗試從會(huì)話中取出值。<\/p>\n<h5>?<\/h5>\n<h5>清單 7. 會(huì)話文件的內(nèi)容<\/h5>\n<pre class='brush:php;toolbar:false;'>userName|s:5:\"ngood\";accountNumber|s:9:\"123456789\";<\/pre>\n<div   id="377j5v51b"   class=\"dw-sidebar ibm-inset\">\n<h2>?<\/h2>\n<h2>存儲(chǔ)密碼<\/h2>\n<p>不 管是在數(shù)據(jù)庫、會(huì)話、文件系統(tǒng)中,還是在任何其他表單中,無論如何密碼都決不能存儲(chǔ)為純文本。處理密碼的最佳方法是將其加密存儲(chǔ)并相互比較加密的密碼。雖 然如此,在實(shí)踐中人們?nèi)匀话衙艽a存儲(chǔ)到純文本中。只要使用可以發(fā)送密碼而非重置密碼的 Web 站點(diǎn),就意味著密碼是存儲(chǔ)在純文本中或者可以獲得用于解密的代碼(如果加密的話)。即使是后者,也可以找到并使用解密代碼。<\/p>\n<p>?<\/p>\n<\/p>\n<p>您 可以采取兩項(xiàng)操作來保護(hù)會(huì)話數(shù)據(jù)。第一是把您放入會(huì)話中的所有內(nèi)容加密。但是正因?yàn)榧用軘?shù)據(jù)并不意味著絕對(duì)安全,因此請(qǐng)慎重采用這種方法作為保護(hù)會(huì)話的惟 一方式。備選方法是把會(huì)話數(shù)據(jù)存儲(chǔ)在其他位置中,比方說數(shù)據(jù)庫。您仍然必須確保鎖定數(shù)據(jù)庫,但是這種方法將解決兩個(gè)問題:第一,它將把數(shù)據(jù)放到比共享文件 系統(tǒng)更加安全的位置;第二,它將使您的應(yīng)用程序可以更輕松地跨越多個(gè) Web 服務(wù)器,同時(shí)共享會(huì)話可以跨越多個(gè)主機(jī)。<\/p>\n<p>要實(shí)現(xiàn)自己的會(huì)話持久性,請(qǐng)參閱 PHP 中的 <code>session_set_save_handler()<\/code> 函數(shù)。使用它,您可以將會(huì)話信息存儲(chǔ)在數(shù)據(jù)庫中,也可以實(shí)現(xiàn)一個(gè)用于加密和解密所有數(shù)據(jù)的處理程序。清單 8 提供了實(shí)現(xiàn)的函數(shù)用法和函數(shù)骨架示例。您還可以在 參考資料 小節(jié)中查看如何使用數(shù)據(jù)庫。<\/p>\n<h5>?<\/h5>\n<h5>清單 8. <code>session_set_save_handler()<\/code> 函數(shù)示例<\/h5>\n<pre class='brush:php;toolbar:false;'>function open($save_path, $session_name)\n{\n    \/* custom code *\/\n    return (true);\n}\n\nfunction close()\n{\n    \/* custom code *\/\n    return (true);\n}\n\nfunction read($id)\n{\n    \/* custom code *\/\n    return (true);\n}\n\nfunction write($id, $sess_data)\n{\n    \/* custom code *\/\n    return (true);\n}\n\nfunction destroy($id)\n{\n    \/* custom code *\/\n    return (true);\n}\n\nfunction gc($maxlifetime)\n{\n    \/* custom code *\/\n    return (true);\n}\n\nsession_set_save_handler(\"open\", \"close\", \"read\", \"write\", \"destroy\", \"gc\");<\/pre>\n<h2>?<\/h2>\n<h2>針對(duì) XSS 漏洞進(jìn)行保護(hù)<\/h2>\n<p>XSS 漏洞代表 2007 年所有歸檔的 Web 站點(diǎn)的大部分漏洞(請(qǐng)參閱 參考資料)。 當(dāng)用戶能夠把 HTML 代碼注入到您的 Web 頁面中時(shí),就是出現(xiàn)了 XSS 漏洞。HTML 代碼可以在腳本標(biāo)記中攜帶 JavaScript 代碼,因而只要提取頁面就允許運(yùn)行 JavaScript。清單 9 中的表單可以表示論壇、維基、社會(huì)網(wǎng)絡(luò)或任何可以輸入文本的其他站點(diǎn)。<\/p>\n<h5>?<\/h5>\n<h5>清單 9. 輸入文本的表單<\/h5>\n<pre class='brush:php;toolbar:false;'><html>\n<head>\n<title>Your chance to input XSS<\/title>\n<\/head>\n<body>\n<form id=\"myFrom\" action=\"showResults.php\" method=\"post\">\n<div><textarea name=\"myText\" rows=\"4\" cols=\"30\"><\/textarea><br \/>\n<input type=\"submit\" value=\"Delete\" name=\"submit\" \/><\/div>\n<\/form>\n<\/body>\n<\/html><\/pre>\n<p>?<\/p>\n<p>清單 10 演示了允許 XSS 攻擊的表單如何輸出結(jié)果。<\/p>\n<h5>?<\/h5>\n<h5>清單 10. showResults.php<\/h5>\n<pre class='brush:php;toolbar:false;'><html>\n<head>\n<title>Results demonstrating XSS<\/title>\n<\/head>\n<body>\n<?php\necho(\"<p>You typed this:<\/p>\");\necho(\"<p>\");\necho($_POST['myText']);\necho(\"<\/p>\");\n?>\n<\/body>\n<\/html><\/pre>\n<p>?<\/p>\n<p>清單 11 提供了一個(gè)基本示例,在該示例中將彈出一個(gè)新窗口并打開 Google 的主頁。如果您的 Web 應(yīng)用程序不針對(duì) XSS 攻擊進(jìn)行保護(hù),則會(huì)造成嚴(yán)重的破壞。例如,某個(gè)人可以添加模仿站點(diǎn)樣式的鏈接以達(dá)到<em>欺騙(phishing)<\/em>目的(請(qǐng)參閱 參考資料)。<\/p>\n<h5>?<\/h5>\n<h5>清單 11. 惡意輸入文本樣例<\/h5>\n<pre class='brush:php;toolbar:false;'>
        	
        <meta http-equiv="Cache-Control" content="no-transform" />
        <meta http-equiv="Cache-Control" content="no-siteapp" />
        <script>var V_PATH="/";window.onerror=function(){ return true; };</script>
        </head>
        
        <body data-commit-time="2023-12-28T14:50:12+08:00" class="editor_body body2_2">
        	<link rel="stylesheet" type="text/css" href="/static/csshw/stylehw.css">
        <header>
            <div   id="377j5v51b"   class="head">
                <div   id="377j5v51b"   class="haed_left">
                    <div   id="377j5v51b"   class="haed_logo">
                        <a href="http://www.miracleart.cn/ja/" title="" class="haed_logo_a">
                            <img src="/static/imghw/logo.png" alt="" class="haed_logoimg">
                        </a>
                    </div>
                    <div   id="377j5v51b"   class="head_nav">
                        <div   id="377j5v51b"   class="head_navs">
                            <a href="javascript:;" title="コミュニティ" class="head_nava head_nava-template1">コミュニティ</a>
                            <div   class="377j5v51b"   id="dropdown-template1" style="display: none;">
                                <div   id="377j5v51b"   class="languagechoose">
                                    <a href="http://www.miracleart.cn/ja/article.html" title="記事" class="languagechoosea on">記事</a>
                                    <a href="http://www.miracleart.cn/ja/faq/zt" title="トピックス" class="languagechoosea">トピックス</a>
                                    <a href="http://www.miracleart.cn/ja/wenda.html" title="に質(zhì)問" class="languagechoosea">に質(zhì)問</a>
                                </div>
                            </div>
                        </div>
        
                        <div   id="377j5v51b"   class="head_navs">
                            <a href="javascript:;" title="學(xué)ぶ" class="head_nava head_nava-template1_1">學(xué)ぶ</a>
                            <div   class="377j5v51b"   id="dropdown-template1_1" style="display: none;">
                                <div   id="377j5v51b"   class="languagechoose">
                                    <a href="http://www.miracleart.cn/ja/course.html" title="コース" class="languagechoosea on">コース</a>
                                    <a href="http://www.miracleart.cn/ja/dic/" title="プログラミング辭典" class="languagechoosea">プログラミング辭典</a>
                                </div>
                            </div>
                        </div>
        
                        <div   id="377j5v51b"   class="head_navs">
                            <a href="javascript:;" title="ツールライブラリ" class="head_nava head_nava-template1_2">ツールライブラリ</a>
                            <div   class="377j5v51b"   id="dropdown-template1_2" style="display: none;">
                                <div   id="377j5v51b"   class="languagechoose">
                                    <a href="http://www.miracleart.cn/ja/toolset/development-tools" title="開発ツール" class="languagechoosea on">開発ツール</a>
                                    <a href="http://www.miracleart.cn/ja/toolset/website-source-code" title="公式サイト" class="languagechoosea">公式サイト</a>
                                    <a href="http://www.miracleart.cn/ja/toolset/php-libraries" title="PHP ライブラリ" class="languagechoosea">PHP ライブラリ</a>
                                    <a href="http://www.miracleart.cn/ja/toolset/js-special-effects" title="JS特殊効果" class="languagechoosea on">JS特殊効果</a>
                                    <a href="http://www.miracleart.cn/ja/toolset/website-materials" title="サイト素材" class="languagechoosea on">サイト素材</a>
                                    <a href="http://www.miracleart.cn/ja/toolset/extension-plug-ins" title="拡張プラグイン" class="languagechoosea on">拡張プラグイン</a>
                                </div>
                            </div>
                        </div>
        
                        <div   id="377j5v51b"   class="head_navs">
                            <a href="http://www.miracleart.cn/ja/ai" title="AIツール" class="head_nava head_nava-template1_3">AIツール</a>
                        </div>
        
                        <div   id="377j5v51b"   class="head_navs">
                            <a href="javascript:;" title="レジャー" class="head_nava head_nava-template1_3">レジャー</a>
                            <div   class="377j5v51b"   id="dropdown-template1_3" style="display: none;">
                                <div   id="377j5v51b"   class="languagechoose">
                                    <a href="http://www.miracleart.cn/ja/game" title="ゲームのダウンロード" class="languagechoosea on">ゲームのダウンロード</a>
                                    <a href="http://www.miracleart.cn/ja/mobile-game-tutorial/" title="ゲームのチュートリアル" class="languagechoosea">ゲームのチュートリアル</a>
        
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                            <div   id="377j5v51b"   class="head_search">
                        <input id="key_words"  onkeydown="if (event.keyCode == 13) searchs('ja')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value="">
                        <a href="javascript:;" title="検索"  onclick="searchs('ja')"><img src="/static/imghw/find.png" alt="検索"></a>
                    </div>
                        <div   id="377j5v51b"   class="head_right">
                    <div   id="377j5v51b"   class="haed_language">
                        <a href="javascript:;" class="layui-btn haed_language_btn">日本語<i class="layui-icon layui-icon-triangle-d"></i></a>
                        <div   class="377j5v51b"   id="dropdown-template" style="display: none;">
                            <div   id="377j5v51b"   class="languagechoose">
                                                        <a href="javascript:setlang('zh-cn');" title="簡體中文" class="languagechoosea">簡體中文</a>
                                                        <a href="javascript:setlang('en');" title="English" class="languagechoosea">English</a>
                                                        <a href="javascript:setlang('zh-tw');" title="繁體中文" class="languagechoosea">繁體中文</a>
                                                        <a href="javascript:;" title="日本語" class="languagechoosea">日本語</a>
                                                        <a href="javascript:setlang('ko');" title="???" class="languagechoosea">???</a>
                                                        <a href="javascript:setlang('ms');" title="Melayu" class="languagechoosea">Melayu</a>
                                                        <a href="javascript:setlang('fr');" title="Fran?ais" class="languagechoosea">Fran?ais</a>
                                                        <a href="javascript:setlang('de');" title="Deutsch" class="languagechoosea">Deutsch</a>
                                                    </div>
                        </div>
                    </div>
                    <span id="377j5v51b"    class="head_right_line"></span>
                                    <div style="display: block;" id="login" class="haed_login ">
                            <a href="javascript:;"  title="Login" class="haed_logina ">Login</a>
                        </div>
                        <div style="display: block;" id="reg" class="head_signup login">
                            <a href="javascript:;"  title="singup" class="head_signupa">singup</a>
                        </div>
                    
                </div>
            </div>
        </header>
        
        	
        	<main>
        		<div   id="377j5v51b"   class="Article_Details_main">
        			<div   id="377j5v51b"   class="Article_Details_main1">
        							<div   id="377j5v51b"   class="Article_Details_main1L">
        					<div   id="377j5v51b"   class="Article_Details_main1Lmain" id="Article_Details_main1Lmain">
        						<div   id="377j5v51b"   class="Article_Details_main1L1">目次</div>
        						<div   id="377j5v51b"   class="Article_Details_main1L2" id="Article_Details_main1L2">
        							<!-- 左側(cè)懸浮,文章定位標(biāo)題1 id="Article_Details_main1L2s_1"-->
        															<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#" title="?" >?</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#入力を検証します" title="入力を検証します" >入力を検証します</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#ファイルシステムを保護(hù)" title="ファイルシステムを保護(hù)" >ファイルシステムを保護(hù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#チェックリスト-ファイルをダウンロードします" title="チェックリスト 1. ファイルをダウンロードします" >チェックリスト 1. ファイルをダウンロードします</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#リスト-有効なファイル名文字のチェック" title="リスト 2. 有効なファイル名文字のチェック" >リスト 2. 有効なファイル名文字のチェック</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#データベースを保護(hù)" title="データベースを保護(hù)" >データベースを保護(hù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#リスト-SQL-ステートメントの実行" title="リスト 3. SQL ステートメントの実行" >リスト 3. SQL ステートメントの実行</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-通過驗(yàn)證和-code-mysql-real-escape-string-code-提供保護(hù)" title="清單 4. 通過驗(yàn)證和 <code>mysql_real_escape_string()</code> 提供保護(hù)" >清單 4. 通過驗(yàn)證和 <code>mysql_real_escape_string()</code> 提供保護(hù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#保護(hù)會(huì)話" title="保護(hù)會(huì)話" >保護(hù)會(huì)話</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-存儲(chǔ)會(huì)話中的數(shù)據(jù)" title="清單 5. 存儲(chǔ)會(huì)話中的數(shù)據(jù)" >清單 5. 存儲(chǔ)會(huì)話中的數(shù)據(jù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-tmp-目錄中的會(huì)話文件" title="清單 6. /tmp 目錄中的會(huì)話文件" >清單 6. /tmp 目錄中的會(huì)話文件</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-會(huì)話文件的內(nèi)容" title="清單 7. 會(huì)話文件的內(nèi)容" >清單 7. 會(huì)話文件的內(nèi)容</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#存儲(chǔ)密碼" title="存儲(chǔ)密碼" >存儲(chǔ)密碼</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-code-session-set-save-handler-code-函數(shù)示例" title="清單 8. <code>session_set_save_handler()</code> 函數(shù)示例" >清單 8. <code>session_set_save_handler()</code> 函數(shù)示例</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#針對(duì)-XSS-漏洞進(jìn)行保護(hù)" title="針對(duì) XSS 漏洞進(jìn)行保護(hù)" >針對(duì) XSS 漏洞進(jìn)行保護(hù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-輸入文本的表單" title="清單 9. 輸入文本的表單" >清單 9. 輸入文本的表單</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-showResults-php" title="清單 10. showResults.php" >清單 10. showResults.php</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-惡意輸入文本樣例" title="清單 11. 惡意輸入文本樣例" >清單 11. 惡意輸入文本樣例</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-更安全的表單" title="清單 12. 更安全的表單" >清單 12. 更安全的表單</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#針對(duì)無效-post-進(jìn)行保護(hù)" title="針對(duì)無效 post 進(jìn)行保護(hù)" >針對(duì)無效 post 進(jìn)行保護(hù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-處理文本的表單" title="清單 13. 處理文本的表單" >清單 13. 處理文本的表單</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-收集數(shù)據(jù)的表單" title="清單 14. 收集數(shù)據(jù)的表單" >清單 14. 收集數(shù)據(jù)的表單</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-帶有無效數(shù)據(jù)的表單" title="清單 15. 帶有無效數(shù)據(jù)的表單" >清單 15. 帶有無效數(shù)據(jù)的表單</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-使用一次性表單標(biāo)記" title="清單 16. 使用一次性表單標(biāo)記" >清單 16. 使用一次性表單標(biāo)記</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#針對(duì)-CSRF-進(jìn)行保護(hù)" title="針對(duì) CSRF 進(jìn)行保護(hù)" >針對(duì) CSRF 進(jìn)行保護(hù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-CSRF-示例" title="清單 17. CSRF 示例" >清單 17. CSRF 示例</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-從-code-REQUEST-code-中獲得數(shù)據(jù)" title="清單 18. 從 <code>$_REQUEST</code> 中獲得數(shù)據(jù)" >清單 18. 從 <code>$_REQUEST</code> 中獲得數(shù)據(jù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#清單-僅從-code-POST-code-中獲得數(shù)據(jù)" title="清單 19. 僅從 <code>$_POST</code> 中獲得數(shù)據(jù)" >清單 19. 僅從 <code>$_POST</code> 中獲得數(shù)據(jù)</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#結(jié)束語" title="結(jié)束語" >結(jié)束語</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#參考資料" title="參考資料" >參考資料</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#學(xué)ぶ" title="學(xué)ぶ" >學(xué)ぶ</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#製品とテクノロジーを入手" title="製品とテクノロジーを入手" >製品とテクノロジーを入手</a>
        								</div>
        																<div   id="377j5v51b"   class="Article_Details_main1L2s ">
        									<a href="#話し合う" title="話し合う" >話し合う</a>
        								</div>
        														</div>
        					</div>
        				</div>
        							<div   id="377j5v51b"   class="Article_Details_main1M">
        					<div   id="377j5v51b"   class="phpgenera_Details_mainL1">
        						<a href="http://www.miracleart.cn/ja/" title="ホームページ"
        							class="phpgenera_Details_mainL1a">ホームページ</a>
        						<img src="/static/imghw/top_right.png" alt="" />
        												<a href="http://www.miracleart.cn/ja/be/"
        							class="phpgenera_Details_mainL1a">バックエンド開発</a>
        						<img src="/static/imghw/top_right.png" alt="" />
        												<a href="http://www.miracleart.cn/ja/php-weizijiaocheng.html"
        							class="phpgenera_Details_mainL1a">PHPチュートリアル</a>
        						<img src="/static/imghw/top_right.png" alt="" />
        						<span>安全な PHP アプリケーションをコード化するための 7 つの習(xí)慣</span>
        					</div>
        					
        					<div   id="377j5v51b"   class="Articlelist_txts">
        						<div   id="377j5v51b"   class="Articlelist_txts_info">
        							<h1 class="Articlelist_txts_title">安全な PHP アプリケーションをコード化するための 7 つの習(xí)慣</h1>
        							<div   id="377j5v51b"   class="Articlelist_txts_info_head">
        								<div   id="377j5v51b"   class="author_info">
        									<a href="http://www.miracleart.cn/ja/member/887227.html"  class="author_avatar">
        									<img class="lazy"  data-src="https://img.php.cn/upload/avatar/000/887/227/63bb7851c9547215.jpg" src="/static/imghw/default1.png" alt="WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB">
        									</a>
        									<div   id="377j5v51b"   class="author_detail">
        																			<a href="http://www.miracleart.cn/ja/member/887227.html" class="author_name">WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB</a>
                                        										</div>
        								</div>
                        			</div>
        							<span id="377j5v51b"    class="Articlelist_txts_time">Jun 13, 2016 pm	 12:34 PM</span>
        															<div   id="377j5v51b"   class="Articlelist_txts_infos">
        																			<span id="377j5v51b"    class="Articlelist_txts_infoss on">echo</span>
        																			<span id="377j5v51b"    class="Articlelist_txts_infoss ">gt</span>
        																			<span id="377j5v51b"    class="Articlelist_txts_infoss ">lt</span>
        																			<span id="377j5v51b"    class="Articlelist_txts_infoss ">php</span>
        																			<span id="377j5v51b"    class="Articlelist_txts_infoss ">post</span>
        																	</div>
        														
        						</div>
        					</div>
        					<hr />
        					<div   id="377j5v51b"   class="article_main php-article">
        						<div   id="377j5v51b"   class="article-list-left detail-content-wrap content">
        						<ins class="adsbygoogle"
        							style="display:block; text-align:center;"
        							data-ad-layout="in-article"
        							data-ad-format="fluid"
        							data-ad-client="ca-pub-5902227090019525"
        							data-ad-slot="3461856641">
        						</ins>
        						
        
        					<p>
                          安全な PHP アプリケーションを作成するための 7 つの習(xí)慣<br>
            </p>
        <div   id="377j5v51b"   class="iteye-blog-content-contain" style="font-size: 14px;">
        <p><em><span>Web アプリケーションのセキュリティの向上</span></em></p>
        <p>PHP アプリケーションのセキュリティには、リモート セキュリティとローカル セキュリティが含まれます。この記事では、PHP 開発者が両方の種類のセキュリティを備えた Web アプリケーションを?qū)g裝する際に身につけるべき習(xí)慣を明らかにします。 </p>
        <p>?</p>
        <p>セキュリティの問題に関しては、実際のプラットフォームとオペレーティング システムのセキュリティの問題に加えて、安全なアプリケーションを作成する必要があることに注意することが重要です。 PHP アプリケーションを作成するときは、次の 7 つの習(xí)慣を適用して、アプリケーションに可能な限り最高のセキュリティを確保してください: </p>
        <ul class="ibm-bullet-list">
        <li>入力を検証します</li>
        <li>ファイルシステムを保護(hù)</li>
        <li>データベースを保護(hù)</li>
        <li>セッションデータを保護(hù)</li>
        <li>クロスサイトスクリプティング (XSS) の脆弱性の保護(hù)</li>
        <li>検査フォームの投稿</li>
        <li>クロスサイト リクエスト フォージェリ (CSRF) から保護(hù)</li>
        </ul>
        <h2 id="">?</h2>
        <h2 id="入力を検証します">入力を検証します</h2>
        <p>データを検証することは、セキュリティに関して採用できる最も重要な習(xí)慣です。入力に関して言えば、それは非常に簡単です。ユーザーを信頼しないことです。ユーザーは優(yōu)秀である可能性があり、そのほとんどがアプリケーションを期待どおりに使用している可能性があります。しかし、インプットの機(jī)會(huì)があるところでは、非常に悪いインプットが行われる可能性も高くなります。アプリケーション開発者は、アプリケーションが誤った入力を受け入れないようにする必要があります。ユーザー入力の場所と正しい値を慎重に考慮することで、堅(jiān)牢で安全なアプリケーションを構(gòu)築できます。 </p>
        <p>?</p>
        <p>ファイル システムとデータベースの相互作用については後で説明しますが、さまざまな種類の検証に適用される一般的な検証のヒントをいくつか紹介します。</p>
        <ul class="ibm-bullet-list">
        <li>ホワイトリストの値を使用</li>
        <li>限られたオプションを常に再検証する</li>
        <li>組み込みのエスケープ関數(shù)を使用する</li>
        <li>正しいデータ型 (數(shù)値など) を確認(rèn)してください</li>
        </ul>
        <p>ホワイトリストに登録された値は、無効なブラックリストに登録された値とは対照的に、正しい値です。 2 つの違いは、通常、検証時(shí)に、可能な値のリストまたは範(fàn)囲が無効な値のリストまたは範(fàn)囲よりも小さく、その多くが不明な値または予期しない値である可能性があることです。 </p>
        <p>?</p>
        <p>検証する場合、多くの場合、すべての未知の値から保護(hù)するよりも、アプリケーションで許可される値を設(shè)計(jì)して検証する方が簡単であることに注意してください。たとえば、フィールド値をすべての數(shù)値に制限するには、入力がすべて數(shù)値であることを保証するルーチンを作成する必要があります。數(shù)値以外の値を検索し、見つかった場合に無効としてマークするルーチンを作成しないでください。 </p>
        <h2 id="">?</h2>
        <h2 id="ファイルシステムを保護(hù)">ファイルシステムを保護(hù)</h2>
        <p>2000 年 7 月、Web サイトが Web サーバー上のファイルに保存されていた顧客データを暴露しました。 Web サイトの訪問者は、その URL を使用してデータを含むファイルを表示しました。ファイルは置き忘れられましたが、この例はファイル システムを攻撃者から保護(hù)することの重要性を強(qiáng)調(diào)しています。 </p>
        <p>PHP アプリケーションがファイルを操作し、ユーザーが入力できる可変データが含まれている場合は、ユーザー入力を注意深くチェックして、ユーザーがファイル システム上で不適切なアクションを?qū)g行できないことを確認(rèn)してください。リスト 1 は、指定された名前のイメージをダウンロードする PHP サイトの例を示しています。 </p>
        <h5 id="">?</h5>
        <h5 id="チェックリスト-ファイルをダウンロードします">チェックリスト 1. ファイルをダウンロードします</h5>
        <pre class='brush:php;toolbar:false;'><?php
        if ($_POST['submit'] == 'Download') {
            $file = $_POST['fileName'];
            header("Content-Type: application/x-octet-stream");
            header("Content-Transfer-Encoding: binary");
            header("Content-Disposition: attachment; filename=\"" . $file . "\";" );
            $fh = fopen($file, 'r');
            while (! feof($fh))
            {
                echo(fread($fh, 1024));
            }
            fclose($fh);
        } else {
            echo("<html><head><");
                echo("title>Guard your filesystem</title></head>");
            echo("<body><form id=\"myFrom\" action=\"" . $_SERVER['PHP_SELF'] .
                "\" method=\"post\">");
            echo("<div><input type=\"text\" name=\"fileName\" value=\"");
            echo(isset($_REQUEST['fileName']) ? $_REQUEST['fileName'] : '');
            echo("\" />");
            echo("<input type=\"submit\" value=\"Download\" name=\"submit\" /></div>");
            echo("</form></body></html>");
        }</pre>
        <p>?</p>
        <p>ご覧のとおり、リスト 1 のより危険なスクリプトは、セッション ディレクトリ內(nèi)のファイル (「セッション データの保護(hù)」を參照) や一部のシステム ファイル (たとえば、 <code>/etc/passwd</code>)。デモンストレーションの目的で、この例ではユーザーがファイル名を入力できるテキスト ボックスを使用しますが、ファイル名はクエリ文字列で簡単に指定できます。 </p>
        <p>?</p>
        <p> ユーザー入力とファイル システム アクセスの同時(shí)構(gòu)成は危険であるため、同時(shí)構(gòu)成を避けるためにデータベースを使用し、生成されたファイル名を非表示にするようにアプリケーションを設(shè)計(jì)することが最善です。ただし、これが常に機(jī)能するとは限りません。リスト 2 は、ファイル名を検証するためのサンプル ルーチンを示しています。正規(guī)表現(xiàn)を使用してファイル名に有効な文字のみが使用されていることを確認(rèn)し、特にドット文字 <code>..</code> をチェックします。 </p>
        <h5 id="">?</h5>
        <h5 id="リスト-有効なファイル名文字のチェック">リスト 2. 有効なファイル名文字のチェック</h5>
        <pre class='brush:php;toolbar:false;'>function isValidFileName($file) {
            /* don't allow .. and allow any "word" character \ / */
            return preg_match('/^(((?:\.)(?!\.))|\w)+$/', $file);
        }</pre>
        <h2 id="">?</h2>
        <h2 id="データベースを保護(hù)">データベースを保護(hù)</h2>
        <p>2008 年 4 月、米國の州矯正局は、クエリ文字列で SQL 列名を使用して機(jī)密データを漏洩しました。この侵害により、悪意のあるユーザーが表示する列を選択し、ページを送信し、データを取得することが可能になりました。この侵害は、アプリケーション開発者が予期できない方法でユーザーがどのように入力を?qū)g行できるかを示し、SQL インジェクション攻撃を防御する必要性を示しています。 </p>
        <p>?</p>
        <p>リスト 3 は、SQL ステートメントを?qū)g行するサンプル スクリプトを示しています。この場合、SQL ステートメントは同じ攻撃を許可する動(dòng)的ステートメントです。このフォームの所有者は、列名を選択リストに制限しているため、フォームが安全であると考えている可能性があります。ただし、このコードには、フォームの不正行為に関する最後のヒントが 1 つ抜けています。コードがオプションをドロップダウン ボックスに制限しているからといって、他のユーザーが必要なコンテンツ (アスタリスク [<code>*</code> を含む) を含むフォームを投稿できないというわけではありません。 ])。 </p>
        <h5 id="">?</h5>
        <h5 id="リスト-SQL-ステートメントの実行">リスト 3. SQL ステートメントの実行</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>SQL Injection Example</title>
        </head>
        <body>
        <form id="myFrom" action="<?php echo $_SERVER['PHP_SELF']; ?>"
            method="post">
        <div><input type="text" name="account_number"
            value="<?php echo(isset($_POST['account_number']) ? 
                $_POST['account_number'] : ''); ?>" />
        <select name="col">
        <option value="account_number">Account Number</option>
        <option value="name">Name</option>
        <option value="address">Address</option>
        </select>
        <input type="submit" value="Save" name="submit" /></div>
        </form>
        <?php
        if ($_POST['submit'] == 'Save') {
            /* do the form processing */
            $link = mysql_connect('hostname', 'user', 'password') or 
                die ('Could not connect' . mysql_error());
            mysql_select_db('test', $link);
        		
        		$col = $_POST['col'];
        
            $select = "SELECT " . $col . " FROM account_data WHERE account_number = " 
                . $_POST['account_number'] . ";" ;
            echo '<p>' . $select . '</p>';
        
            $result = mysql_query($select) or die('<p>' . mysql_error() . '</p>');
        
            echo '<table>';
            while ($row = mysql_fetch_assoc($result)) {
                echo '<tr>';
                echo '<td>' . $row[$col] . '</td>';
                echo '</tr>';
            }
            echo '</table>';
        
            mysql_close($link);
        }
        ?>
        </body>
        </html></pre>
        <p>?</p>
        <p>因此,要形成保護(hù)數(shù)據(jù)庫的習(xí)慣,請(qǐng)盡可能避免使用動(dòng)態(tài) SQL 代碼。如果無法避免動(dòng)態(tài) SQL 代碼,請(qǐng)不要對(duì)列直接使用輸入。清單 4 顯示了除使用靜態(tài)列外,還可以向帳戶編號(hào)字段添加簡單驗(yàn)證例程以確保輸入值不是非數(shù)字值。</p>
        <h5 id="">?</h5>
        <h5 id="清單-通過驗(yàn)證和-code-mysql-real-escape-string-code-提供保護(hù)">清單 4. 通過驗(yàn)證和 <code>mysql_real_escape_string()</code> 提供保護(hù)</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>SQL Injection Example</title>
        </head>
        <body>
        <form id="myFrom" action="<?php echo $_SERVER['PHP_SELF']; ?>"
            method="post">
        <div><input type="text" name="account_number"
            value="<?php echo(isset($_POST['account_number']) ? 
                $_POST['account_number'] : ''); ?>" /> <input type="submit"
            value="Save" name="submit" /></div>
        </form>
        <?php
        function isValidAccountNumber($number) 
        {
            return is_numeric($number);
        }
        
        if ($_POST['submit'] == 'Save') {
        
            /* Remember habit #1--validate your data! */
            if (isset($_POST['account_number']) &&
            isValidAccountNumber($_POST['account_number'])) {
        
                /* do the form processing */
                $link = mysql_connect('hostname', 'user', 'password') or
                die ('Could not connect' . mysql_error());
                mysql_select_db('test', $link);
        
                $select = sprintf("SELECT account_number, name, address " .
        		" FROM account_data WHERE account_number = %s;",
                mysql_real_escape_string($_POST['account_number']));
                echo '<p>' . $select . '</p>';
        
                $result = mysql_query($select) or die('<p>' . mysql_error() . '</p>');
        
                echo '<table>';
                while ($row = mysql_fetch_assoc($result)) {
                    echo '<tr>';
                    echo '<td>' . $row['account_number'] . '</td>';
                    echo '<td>' . $row['name'] . '</td>';
                    echo '<td>' . $row['address'] . '</td>';
                    echo '</tr>';
                }
                echo '</table>';
        
                mysql_close($link);
            } else {
                echo "<span style=\"font-color:red\">" .
            "Please supply a valid account number!</span>";
        
            }
        }
        ?>
        </body>
        </html></pre>
        <p>?</p>
        <p>本例還展示了 <code>mysql_real_escape_string()</code> 函數(shù)的用法。此函數(shù)將正確地過濾您的輸入,因此它不包括無效字符。如果您一直依賴于 <code>magic_quotes_gpc</code>,那么需要注意它已被棄用并且將在 PHP V6 中刪除。從現(xiàn)在開始應(yīng)避免使用它并在此情況下編寫安全的 PHP 應(yīng)用程序。此外,如果使用的是 ISP,則有可能您的 ISP 沒有啟用 <code>magic_quotes_gpc</code>。</p>
        <p>?</p>
        <p>最 后,在改進(jìn)的示例中,您可以看到該 SQL 語句和輸出沒有包括動(dòng)態(tài)列選項(xiàng)。使用這種方法,如果把列添加到稍后含有不同信息的表中,則可以輸出這些列。如果要使用框架以與數(shù)據(jù)庫結(jié)合使用,則您的框架 可能已經(jīng)為您執(zhí)行了 SQL 驗(yàn)證。確保查閱文檔以保證框架的安全性;如果仍然不確定,請(qǐng)進(jìn)行驗(yàn)證以確保穩(wěn)妥。即使使用框架進(jìn)行數(shù)據(jù)庫交互,仍然需要執(zhí)行其他驗(yàn)證。</p>
        <h2 id="">?</h2>
        <h2 id="保護(hù)會(huì)話">保護(hù)會(huì)話</h2>
        <p>默認(rèn)情況下,PHP 中的會(huì)話信息將被寫入臨時(shí)目錄。考慮清單 5 中的表單,該表單將顯示如何存儲(chǔ)會(huì)話中的用戶 ID 和帳戶編號(hào)。</p>
        <h5 id="">?</h5>
        <h5 id="清單-存儲(chǔ)會(huì)話中的數(shù)據(jù)">清單 5. 存儲(chǔ)會(huì)話中的數(shù)據(jù)</h5>
        <pre class='brush:php;toolbar:false;'><?php
        session_start();
        ?>
        <html>
        <head>
        <title>Storing session information</title>
        </head>
        <body>
        <?php
        if ($_POST['submit'] == 'Save') {
            $_SESSION['userName'] = $_POST['userName'];
            $_SESSION['accountNumber'] = $_POST['accountNumber'];
        }
        ?>
        <form id="myFrom" action="<?php echo $_SERVER['PHP_SELF']; ?>"
            method="post">
        <div><input type="hidden" name="token" value="<?php echo $token; ?>" />
        <input type="text" name="userName"
            value="<?php echo(isset($_POST['userName']) ? $_POST['userName'] : ''); ?>" />
        <br />
        <input type="text" name="accountNumber"
            value="<?php echo(isset($_POST['accountNumber']) ? 
            $_POST['accountNumber'] : ''); ?>" />
        <br />
        <input type="submit" value="Save" name="submit" /></div>
        </form>
        </body>
        </html></pre>
        <p>?</p>
        <p>清單 6 顯示了 /tmp 目錄的內(nèi)容。</p>
        <h5 id="">?</h5>
        <h5 id="清單-tmp-目錄中的會(huì)話文件">清單 6. /tmp 目錄中的會(huì)話文件</h5>
        <pre class='brush:php;toolbar:false;'>-rw-------  1 _www    wheel       97 Aug 18 20:00 sess_9e4233f2cd7cae35866cd8b61d9fa42b</pre>
        <p>?</p>
        <p>正如您所見,在輸出時(shí)(參見清單 7),會(huì)話文件以非常易讀的格式包含信息。由于該文件必須可由 Web 服務(wù)器用戶讀寫,因此會(huì)話文件可能為共享服務(wù)器中的所有用戶帶來嚴(yán)重的問題。除您之外的某個(gè)人可以編寫腳本來讀取這些文件,因此可以嘗試從會(huì)話中取出值。</p>
        <h5 id="">?</h5>
        <h5 id="清單-會(huì)話文件的內(nèi)容">清單 7. 會(huì)話文件的內(nèi)容</h5>
        <pre class='brush:php;toolbar:false;'>userName|s:5:"ngood";accountNumber|s:9:"123456789";</pre>
        <div   id="377j5v51b"   class="dw-sidebar ibm-inset">
        <h2 id="">?</h2>
        <h2 id="存儲(chǔ)密碼">存儲(chǔ)密碼</h2>
        <p>不 管是在數(shù)據(jù)庫、會(huì)話、文件系統(tǒng)中,還是在任何其他表單中,無論如何密碼都決不能存儲(chǔ)為純文本。處理密碼的最佳方法是將其加密存儲(chǔ)并相互比較加密的密碼。雖 然如此,在實(shí)踐中人們?nèi)匀话衙艽a存儲(chǔ)到純文本中。只要使用可以發(fā)送密碼而非重置密碼的 Web 站點(diǎn),就意味著密碼是存儲(chǔ)在純文本中或者可以獲得用于解密的代碼(如果加密的話)。即使是后者,也可以找到并使用解密代碼。</p>
        <p>?</p>
        </p>
        <p>您 可以采取兩項(xiàng)操作來保護(hù)會(huì)話數(shù)據(jù)。第一是把您放入會(huì)話中的所有內(nèi)容加密。但是正因?yàn)榧用軘?shù)據(jù)并不意味著絕對(duì)安全,因此請(qǐng)慎重采用這種方法作為保護(hù)會(huì)話的惟 一方式。備選方法是把會(huì)話數(shù)據(jù)存儲(chǔ)在其他位置中,比方說數(shù)據(jù)庫。您仍然必須確保鎖定數(shù)據(jù)庫,但是這種方法將解決兩個(gè)問題:第一,它將把數(shù)據(jù)放到比共享文件 系統(tǒng)更加安全的位置;第二,它將使您的應(yīng)用程序可以更輕松地跨越多個(gè) Web 服務(wù)器,同時(shí)共享會(huì)話可以跨越多個(gè)主機(jī)。</p>
        <p>要實(shí)現(xiàn)自己的會(huì)話持久性,請(qǐng)參閱 PHP 中的 <code>session_set_save_handler()</code> 函數(shù)。使用它,您可以將會(huì)話信息存儲(chǔ)在數(shù)據(jù)庫中,也可以實(shí)現(xiàn)一個(gè)用于加密和解密所有數(shù)據(jù)的處理程序。清單 8 提供了實(shí)現(xiàn)的函數(shù)用法和函數(shù)骨架示例。您還可以在 參考資料 小節(jié)中查看如何使用數(shù)據(jù)庫。</p>
        <h5 id="">?</h5>
        <h5 id="清單-code-session-set-save-handler-code-函數(shù)示例">清單 8. <code>session_set_save_handler()</code> 函數(shù)示例</h5>
        <pre class='brush:php;toolbar:false;'>function open($save_path, $session_name)
        {
            /* custom code */
            return (true);
        }
        
        function close()
        {
            /* custom code */
            return (true);
        }
        
        function read($id)
        {
            /* custom code */
            return (true);
        }
        
        function write($id, $sess_data)
        {
            /* custom code */
            return (true);
        }
        
        function destroy($id)
        {
            /* custom code */
            return (true);
        }
        
        function gc($maxlifetime)
        {
            /* custom code */
            return (true);
        }
        
        session_set_save_handler("open", "close", "read", "write", "destroy", "gc");</pre>
        <h2 id="">?</h2>
        <h2 id="針對(duì)-XSS-漏洞進(jìn)行保護(hù)">針對(duì) XSS 漏洞進(jìn)行保護(hù)</h2>
        <p>XSS 漏洞代表 2007 年所有歸檔的 Web 站點(diǎn)的大部分漏洞(請(qǐng)參閱 參考資料)。 當(dāng)用戶能夠把 HTML 代碼注入到您的 Web 頁面中時(shí),就是出現(xiàn)了 XSS 漏洞。HTML 代碼可以在腳本標(biāo)記中攜帶 JavaScript 代碼,因而只要提取頁面就允許運(yùn)行 JavaScript。清單 9 中的表單可以表示論壇、維基、社會(huì)網(wǎng)絡(luò)或任何可以輸入文本的其他站點(diǎn)。</p>
        <h5 id="">?</h5>
        <h5 id="清單-輸入文本的表單">清單 9. 輸入文本的表單</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Your chance to input XSS</title>
        </head>
        <body>
        <form id="myFrom" action="showResults.php" method="post">
        <div><textarea name="myText" rows="4" cols="30"></textarea><br />
        <input type="submit" value="Delete" name="submit" /></div>
        </form>
        </body>
        </html></pre>
        <p>?</p>
        <p>清單 10 演示了允許 XSS 攻擊的表單如何輸出結(jié)果。</p>
        <h5 id="">?</h5>
        <h5 id="清單-showResults-php">清單 10. showResults.php</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Results demonstrating XSS</title>
        </head>
        <body>
        <?php
        echo("<p>You typed this:</p>");
        echo("<p>");
        echo($_POST['myText']);
        echo("</p>");
        ?>
        </body>
        </html></pre>
        <p>?</p>
        <p>清單 11 提供了一個(gè)基本示例,在該示例中將彈出一個(gè)新窗口并打開 Google 的主頁。如果您的 Web 應(yīng)用程序不針對(duì) XSS 攻擊進(jìn)行保護(hù),則會(huì)造成嚴(yán)重的破壞。例如,某個(gè)人可以添加模仿站點(diǎn)樣式的鏈接以達(dá)到<em>欺騙(phishing)</em>目的(請(qǐng)參閱 參考資料)。</p>
        <h5 id="">?</h5>
        <h5 id="清單-惡意輸入文本樣例">清單 11. 惡意輸入文本樣例</h5>
        <pre class='brush:php;toolbar:false;'><script type="text/javascript">myRef = window.open('http://www.google.com','mywin',
        'left=20,top=20,width=500,height=500,toolbar=1,resizable=0');</script></pre>
        <p>?</p>
        <p>要防止受到 XSS 攻擊,只要變量的值將被打印到輸出中,就需要通過 <code>htmlentities()</code> 函數(shù)過濾輸入。記住要遵循第一個(gè)習(xí)慣:在 Web 應(yīng)用程序的名稱、電子郵件地址、電話號(hào)碼和帳單信息的輸入中用白名單中的值驗(yàn)證輸入數(shù)據(jù)。</p>
        <p>?</p>
        <p>下面顯示了更安全的顯示文本輸入的頁面。</p>
        <h5 id="">?</h5>
        <h5 id="清單-更安全的表單">清單 12. 更安全的表單</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Results demonstrating XSS</title>
        </head>
        <body>
        <?php
        echo("<p>You typed this:</p>");
        echo("<p>");
        echo(htmlentities($_POST['myText']));
        echo("</p>");
        ?>
        </body>
        </html></pre>
        <h2 id="">?</h2>
        <h2 id="針對(duì)無效-post-進(jìn)行保護(hù)">針對(duì)無效 post 進(jìn)行保護(hù)</h2>
        <p><em>表單欺騙</em> 是指有人把 post 從某個(gè)不恰當(dāng)?shù)奈恢冒l(fā)到您的表單中。欺騙表單的最簡單方法就是創(chuàng)建一個(gè)通過提交至表單來傳遞所有值的 Web 頁面。由于 Web 應(yīng)用程序是沒有狀態(tài)的,因此沒有一種絕對(duì)可行的方法可以確保所發(fā)布數(shù)據(jù)來自指定位置。從 IP 地址到主機(jī)名,所有內(nèi)容都是可以欺騙的。清單 13 顯示了允許輸入信息的典型表單。</p>
        <h5 id="">?</h5>
        <h5 id="清單-處理文本的表單">清單 13. 處理文本的表單</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Form spoofing example</title>
        </head>
        <body>
        <?php
        if ($_POST['submit'] == 'Save') {
            echo("<p>I am processing your text: ");
            echo($_POST['myText']);
            echo("</p>");
        }
        ?>
        </body>
        </html></pre>
        <p>?</p>
        <p>清單 14 顯示了將發(fā)布到清單 13 所示表單中的表單。要嘗試此操作,您可以把該表單放到 Web 站點(diǎn)中,然后把清單 14 中的代碼另存為桌面上的 HTML 文檔。在保存表單后,在瀏覽器中打開該表單。然后可以填寫數(shù)據(jù)并提交表單,從而觀察如何處理數(shù)據(jù)。</p>
        <h5 id="">?</h5>
        <h5 id="清單-收集數(shù)據(jù)的表單">清單 14. 收集數(shù)據(jù)的表單</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Collecting your data</title>
        </head>
        <body>
        <form action="processStuff.php" method="post">
        <select name="answer">
        <option value="Yes">Yes</option>
        <option value="No">No</option>
        </select>
        <input type="submit" value="Save" name="submit" />
        </form>
        </body>
        </html></pre>
        <p>?</p>
        <p>表單欺騙的潛在影響是,如果擁有含下拉框、單選按鈕、復(fù)選框或其他限制輸入的表單,則當(dāng)表單被欺騙時(shí)這些限制沒有任何意義??紤]清單 15 中的代碼,其中包含帶有無效數(shù)據(jù)的表單。</p>
        <h5 id="">?</h5>
        <h5 id="清單-帶有無效數(shù)據(jù)的表單">清單 15. 帶有無效數(shù)據(jù)的表單</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Collecting your data</title>
        </head>
        <body>
        <form action="http://path.example.com/processStuff.php" 
            method="post"><input type="text" name="answer"
            value="There is no way this is a valid response to a yes/no answer..." />
        <input type="submit" value="Save" name="submit" />
        </form>
        </body>
        </html></pre>
        <p>?</p>
        <p>思考一下:如果擁有限制用戶輸入量的下拉框或單選按鈕,您可能會(huì)認(rèn)為不用擔(dān)心驗(yàn)證輸入的問題。 畢竟,輸入表單將確保用戶只能輸入某些數(shù)據(jù),對(duì)吧?要限制表單欺騙,需要進(jìn)行驗(yàn)證以確保發(fā)布者的身份是真實(shí)的。您可以使用一種一次性使用標(biāo)記,雖然這種技 術(shù)仍然不能確保表單絕對(duì)安全,但是會(huì)使表單欺騙更加困難。由于在每次調(diào)用表單時(shí)都會(huì)更改標(biāo)記,因此想要成為攻擊者就必須獲得發(fā)送表單的實(shí)例,去掉標(biāo)記,并 把它放到假表單中。使用這項(xiàng)技術(shù)可以阻止惡意用戶構(gòu)建持久的 Web 表單來向應(yīng)用程序發(fā)布不適當(dāng)?shù)恼?qǐng)求。清單 16 提供了一種表單標(biāo)記示例。</p>
        <h5 id="">?</h5>
        <h5 id="清單-使用一次性表單標(biāo)記">清單 16. 使用一次性表單標(biāo)記</h5>
        <pre class='brush:php;toolbar:false;'><?php
        session_start();
        ?>
        <html>
        <head>
        <title>SQL Injection Test</title>
        </head>
        <body>
        <?php
        
        echo 'Session token=' . $_SESSION['token'];
        echo '<br />';
        echo 'Token from form=' . $_POST['token'];
        echo '<br />';
        
        if ($_SESSION['token'] == $_POST['token']) {
            /* cool, it's all good... create another one */
        
        } else {
            echo '<h1>Go away!</h1>';
        }
        $token = md5(uniqid(rand(), true)); 
        $_SESSION['token'] = $token; 
        ?>
        <form id="myFrom" action="<?php echo $_SERVER['PHP_SELF']; ?>"
            method="post">
        <div><input type="hidden" name="token" value="<?php echo $token; ?>" />
        <input type="text" name="myText"
            value="<?php echo(isset($_POST['myText']) ? $_POST['myText'] : ''); ?>" />
        <input type="submit" value="Save" name="submit" /></div>
        </form>
        </body>
        </html></pre>
        <h2 id="">?</h2>
        <h2 id="針對(duì)-CSRF-進(jìn)行保護(hù)">針對(duì) CSRF 進(jìn)行保護(hù)</h2>
        <p><em>跨站點(diǎn)請(qǐng)求偽造</em>(CSRF 攻擊)是利用用戶權(quán)限執(zhí)行攻擊的結(jié)果。在 CSRF 攻擊中,您的用戶可以輕易地成為預(yù)料不到的幫兇。清單 17 提供了執(zhí)行特定操作的頁面示例。此頁面將從 cookie 中查找用戶登錄信息。只要 cookie 有效,Web 頁面就會(huì)處理請(qǐng)求。</p>
        <h5 id="">?</h5>
        <h5 id="清單-CSRF-示例">清單 17. CSRF 示例</h5>
        <pre class='brush:php;toolbar:false;'><img src="http://www.example.com/processSomething?id=123456789" /></pre>
        <p>?</p>
        <p>CSRF 攻擊通常是以 <code><img></code> 標(biāo)記的形式出現(xiàn)的,因?yàn)闉g覽器將在不知情的情況下調(diào)用該 URL 以獲得圖像。但是,圖像來源可以是根據(jù)傳入?yún)?shù)進(jìn)行處理的同一個(gè)站點(diǎn)中的頁面 URL。當(dāng)此 <code><img></code> 標(biāo)記與 XSS 攻擊結(jié)合在一起時(shí) ― 在已歸檔的攻擊中最常見 ― 用戶可以在不知情的情況下輕松地對(duì)其憑證執(zhí)行一些操作 ― 因此是偽造的。</p>
        <p>為了保護(hù)您免受 CSRF 攻擊,需要使用在檢驗(yàn)表單 post 時(shí)使用的一次性標(biāo)記方法。此外,使用顯式的 <code>$_POST</code> 變量而非 <code>$_REQUEST</code>。清單 18 演示了處理相同 Web 頁面的糟糕示例 ― 無論是通過 <code>GET</code> 請(qǐng)求調(diào)用頁面還是通過把表單發(fā)布到頁面中。</p>
        <h5 id="">?</h5>
        <h5 id="清單-從-code-REQUEST-code-中獲得數(shù)據(jù)">清單 18. 從 <code>$_REQUEST</code> 中獲得數(shù)據(jù)</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Processes both posts AND gets</title>
        </head>
        <body>
        <?php
        if ($_REQUEST['submit'] == 'Save') {
            echo("<p>I am processing your text: ");
            echo(htmlentities($_REQUEST['text']));
            echo("</p>");
        }
        ?>
        </body>
        </html></pre>
        <p>?</p>
        <p>清單 19 顯示了只使用表單 <code>POST</code> 的干凈頁面。</p>
        <h5 id="">?</h5>
        <h5 id="清單-僅從-code-POST-code-中獲得數(shù)據(jù)">清單 19. 僅從 <code>$_POST</code> 中獲得數(shù)據(jù)</h5>
        <pre class='brush:php;toolbar:false;'><html>
        <head>
        <title>Processes both posts AND gets</title>
        </head>
        <body>
        <?php
        if ($_POST['submit'] == 'Save') {
            echo("<p>I am processing your text: ");
            echo(htmlentities($_POST['text']));
            echo("</p>");
        }
        ?>
        </body>
        </html></pre>
        <h2 id="">?</h2>
        <h2 id="結(jié)束語">結(jié)束語</h2>
        <p>從這七個(gè)習(xí)慣開始嘗試編寫更安全的 PHP Web 應(yīng)用程序,可以幫助您避免成為惡意攻擊的受害者。和許多其他習(xí)慣一樣,這些習(xí)慣最開始可能很難適應(yīng),但是隨著時(shí)間的推移遵循這些習(xí)慣會(huì)變得越來越自然。</p>
        <p>?</p>
        <p>記住第一個(gè)習(xí)慣是關(guān)鍵:驗(yàn)證輸入。在確保輸入不包括無效值之后,可以繼續(xù)保護(hù)文件系統(tǒng)、數(shù)據(jù)庫和會(huì)話。最后,確保 PHP 代碼可以抵抗 XSS 攻擊、表單欺騙和 CSRF 攻擊。形成這些習(xí)慣后可以幫助您抵御一些簡單的攻擊。</p>
        <h2 id="">?</h2>
        <h2 id="參考資料">參考資料</h2>
        <h3 id="學(xué)ぶ">學(xué)ぶ</h3>
        <ul class="ibm-bullet-list">
        <li>この記事の英語版のオリジナル版は、developerWorks グローバル サイトで読むことができます。 </li>
        <li>developerWorks チュートリアル「PHP アプリケーションのセキュリティ保護(hù)」を読んで、開発者が違反できない 4 つのセキュリティ ルールを?qū)W習(xí)してください。 </li>
        <li>PHP アプリケーションのデータを保護(hù)する方法については、「すべての人のための PHP 暗號(hào)化」を読んでください。 </li>
        <li>PHP セキュリティに関する優(yōu)れた情報(bào)については、PHP Security Consortium を參照してください。 </li>
        <li>セキュリティのヒントを參照するには、公式 PHP Web サイトの PHP セキュリティ サイトにアクセスしてください。 </li>
        <li>カスタム セッション ハンドラーの実裝の詳細(xì)については、公式 PHP サイトの <code>session_set_save_handler</code> エントリをご覧ください。 </li>
        <li>Wikipedia の優(yōu)れた XSS エントリを読んでください。 </li>
        <li>PHP.org で Chris Shiflett の <em>Essential PHP Security</em> を読んでください。 </li>
        <li>
        PHP.net は、PHP 開発者にとって素晴らしいリソースです。 </li>
        <li>「PHP の推奨書籍リスト」を確認(rèn)してください。 </li>
        <li>developerWorks のすべての PHP コンテンツを參照します。 </li>
        <li>PHP の拡張に関するヒントについては、IBM developerWorks の PHP プロジェクト リソースを確認(rèn)してください。 </li>
        <li>ソフトウェア開発者向けの興味深いインタビューやディスカッションを聞くには、developerWorks ポッドキャストにぜひアクセスしてください。 </li>
        <li>PHP でデータベースを使用したいですか? IBM DB2 V9 をサポートする、シームレスですぐに使用でき、インストールが簡単な PHP 開発および運(yùn)用環(huán)境である Zend Core for IBM をチェックしてください。 </li>
        <li>developerWorks の技術(shù)イベントや Web キャストにご注目ください。 </li>
        <li> 世界中で開催される IBM オープンソース開発者向けの今後のワークショップ、見本市、Web キャスト、その他のイベントをチェックしてください。 </li>
        <li>developerWorks オープン ソース ゾーンにアクセスして、オープン ソース テクノロジーを使用した開発や IBM 製品での使用に役立つ豊富なハウツー情報(bào)、ツール、プロジェクトの更新情報(bào)を入手してください。 </li>
        <li>無料のdeveloperWorks On Demandデモをチェックして、IBMとオープンソースのテクノロジーと製品の機(jī)能を確認(rèn)して學(xué)習(xí)してください。 </li>
        </ul>
        <h3 id="製品とテクノロジーを入手">製品とテクノロジーを入手</h3>
        <ul class="ibm-bullet-list">
        <li>ダウンロードまたは DVD で入手できる IBM 試用版ソフトウェアを使用して、次の開発プロジェクトを改善します。 </li>
        <li>IBM 製品評(píng)価版をダウンロードし、DB2?、Lotus?、Rational?、Tivoli?、WebSphere? のアプリケーション開発ツールとミドルウェア製品の使用を開始してください。 </li>
        </ul>
        <h3 id="話し合う">話し合う</h3>
        <ul class="ibm-bullet-list">
        <li>developerWorks ブログに參加し、developerWorks コミュニティに參加してください。 </li>
        <li>developerWorks PHP フォーラムに參加してください: IBM Information Management 製品 (DB2、IDS) を使用した PHP アプリケーションの開発。 </li>
        </ul>
        <p>出典: http://www.ibm.com/developerworks/cn/opensource/os-php-secure-apps/</p>
        <p>?</p>
        
         <div   id="377j5v51b"   class="clear"></div>
        </div>
        
        
        						</div>
        					</div>
        					<div   id="377j5v51b"   class="wzconShengming_sp">
        						<div   id="377j5v51b"   class="bzsmdiv_sp">このウェブサイトの聲明</div>
        						<div>この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。</div>
        					</div>
        				</div>
        
        				<ins class="adsbygoogle"
             style="display:block"
             data-ad-format="autorelaxed"
             data-ad-client="ca-pub-5902227090019525"
             data-ad-slot="2507867629"></ins>
        
        
        
        				<div   id="377j5v51b"   class="AI_ToolDetails_main4sR">
        
        
        				<ins class="adsbygoogle"
                style="display:block"
                data-ad-client="ca-pub-5902227090019525"
                data-ad-slot="3653428331"
                data-ad-format="auto"
                data-full-width-responsive="true"></ins>
            
        
        
        					<!-- <div   id="377j5v51b"   class="phpgenera_Details_mainR4">
        						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
        							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
        								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        									src="/static/imghw/hotarticle2.png" alt="" />
        								<h2>人気の記事</h2>
        							</div>
        							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796832397.html" title="グラスワンダービルドガイド|ウマゴサメはかなりダービーです" class="phpgenera_Details_mainR4_bottom_title">グラスワンダービルドガイド|ウマゴサメはかなりダービーです</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>1 か月前</span>
        										<span>By Jack chen</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796833110.html" title="<??>:森の99泊 - すべてのバッジとそれらのロックを解除する方法" class="phpgenera_Details_mainR4_bottom_title"><??>:森の99泊 - すべてのバッジとそれらのロックを解除する方法</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>4週間前</span>
        										<span>By DDD</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796831605.html" title="Uma Musume Pretty Derby Bannerスケジュール(2025年7月)" class="phpgenera_Details_mainR4_bottom_title">Uma Musume Pretty Derby Bannerスケジュール(2025年7月)</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>1 か月前</span>
        										<span>By Jack chen</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796836699.html" title="船と墓のためのRimworld Odyssey溫度ガイド" class="phpgenera_Details_mainR4_bottom_title">船と墓のためのRimworld Odyssey溫度ガイド</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>3週間前</span>
        										<span>By Jack chen</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796831905.html" title="Windowsセキュリティは空白であるか、オプションを表示しません" class="phpgenera_Details_mainR4_bottom_title">Windowsセキュリティは空白であるか、オプションを表示しません</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>1 か月前</span>
        										<span>By 下次還敢</span>
        									</div>
        								</div>
        														</div>
        							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
        								<a href="http://www.miracleart.cn/ja/article.html">もっと見る</a>
        							</div>
        						</div>
        					</div> -->
        
        
        											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
        							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
        								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/hottools2.png" alt="" />
        									<h2>ホットAIツール</h2>
        								</div>
        								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
        																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title">
        													<h3>Undress AI Tool</h3>
        												</a>
        												<p>脫衣畫像を無料で</p>
        											</div>
        										</div>
        																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title">
        													<h3>Undresser.AI Undress</h3>
        												</a>
        												<p>リアルなヌード寫真を作成する AI 搭載アプリ</p>
        											</div>
        										</div>
        																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title">
        													<h3>AI Clothes Remover</h3>
        												</a>
        												<p>寫真から衣服を削除するオンライン AI ツール。</p>
        											</div>
        										</div>
        																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title">
        													<h3>Clothoff.io</h3>
        												</a>
        												<p>AI衣類リムーバー</p>
        											</div>
        										</div>
        																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title">
        													<h3>Video Face Swap</h3>
        												</a>
        												<p>完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。</p>
        											</div>
        										</div>
        																</div>
        								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
        									<a href="http://www.miracleart.cn/ja/ai">もっと見る</a>
        								</div>
        							</div>
        						</div>
        					
        
        
        					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
        						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
        							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
        								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        									src="/static/imghw/hotarticle2.png" alt="" />
        								<h2>人気の記事</h2>
        							</div>
        							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796832397.html" title="グラスワンダービルドガイド|ウマゴサメはかなりダービーです" class="phpgenera_Details_mainR4_bottom_title">グラスワンダービルドガイド|ウマゴサメはかなりダービーです</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>1 か月前</span>
        										<span>By Jack chen</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796833110.html" title="<??>:森の99泊 - すべてのバッジとそれらのロックを解除する方法" class="phpgenera_Details_mainR4_bottom_title"><??>:森の99泊 - すべてのバッジとそれらのロックを解除する方法</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>4週間前</span>
        										<span>By DDD</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796831605.html" title="Uma Musume Pretty Derby Bannerスケジュール(2025年7月)" class="phpgenera_Details_mainR4_bottom_title">Uma Musume Pretty Derby Bannerスケジュール(2025年7月)</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>1 か月前</span>
        										<span>By Jack chen</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796836699.html" title="船と墓のためのRimworld Odyssey溫度ガイド" class="phpgenera_Details_mainR4_bottom_title">船と墓のためのRimworld Odyssey溫度ガイド</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>3週間前</span>
        										<span>By Jack chen</span>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/1796831905.html" title="Windowsセキュリティは空白であるか、オプションを表示しません" class="phpgenera_Details_mainR4_bottom_title">Windowsセキュリティは空白であるか、オプションを表示しません</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<span>1 か月前</span>
        										<span>By 下次還敢</span>
        									</div>
        								</div>
        														</div>
        							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
        								<a href="http://www.miracleart.cn/ja/article.html">もっと見る</a>
        							</div>
        						</div>
        					</div>
        
        
        											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
        							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
        								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/hottools2.png" alt="" />
        									<h2>ホットツール</h2>
        								</div>
        								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
        																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/toolset/development-tools/92" title="メモ帳++7.3.1" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="メモ帳++7.3.1" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/toolset/development-tools/92" title="メモ帳++7.3.1" class="phpmain_tab2_mids_title">
        													<h3>メモ帳++7.3.1</h3>
        												</a>
        												<p>使いやすく無料のコードエディター</p>
        											</div>
        										</div>
        																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/toolset/development-tools/93" title="SublimeText3 中國語版" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 中國語版" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/toolset/development-tools/93" title="SublimeText3 中國語版" class="phpmain_tab2_mids_title">
        													<h3>SublimeText3 中國語版</h3>
        												</a>
        												<p>中國語版、とても使いやすい</p>
        											</div>
        										</div>
        																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/toolset/development-tools/121" title="ゼンドスタジオ 13.0.1" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="ゼンドスタジオ 13.0.1" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/toolset/development-tools/121" title="ゼンドスタジオ 13.0.1" class="phpmain_tab2_mids_title">
        													<h3>ゼンドスタジオ 13.0.1</h3>
        												</a>
        												<p>強(qiáng)力な PHP 統(tǒng)合開発環(huán)境</p>
        											</div>
        										</div>
        																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/toolset/development-tools/469" title="ドリームウィーバー CS6" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="ドリームウィーバー CS6" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/toolset/development-tools/469" title="ドリームウィーバー CS6" class="phpmain_tab2_mids_title">
        													<h3>ドリームウィーバー CS6</h3>
        												</a>
        												<p>ビジュアル Web 開発ツール</p>
        											</div>
        										</div>
        																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
        											<a href="http://www.miracleart.cn/ja/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_top_img">
        												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac版" />
        											</a>
        											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
        												<a href="http://www.miracleart.cn/ja/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_title">
        													<h3>SublimeText3 Mac版</h3>
        												</a>
        												<p>神レベルのコード編集ソフト(SublimeText3)</p>
        											</div>
        										</div>
        																	</div>
        								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
        									<a href="http://www.miracleart.cn/ja/ai">もっと見る</a>
        								</div>
        							</div>
        						</div>
        										
        
        					
        					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
        						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
        							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
        								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        									src="/static/imghw/hotarticle2.png" alt="" />
        								<h2>ホットトピック</h2>
        							</div>
        							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/laravel-tutori" title="Laravel チュートリアル" class="phpgenera_Details_mainR4_bottom_title">Laravel チュートリアル</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
        											<img src="/static/imghw/eyess.png" alt="" />
        											<span>1601</span>
        										</div>
        										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
        											<img src="/static/imghw/tiezi.png" alt="" />
        											<span>29</span>
        										</div>
        									</div>
        								</div>
        															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
        									<a href="http://www.miracleart.cn/ja/faq/php-tutorial" title="PHP チュートリアル" class="phpgenera_Details_mainR4_bottom_title">PHP チュートリアル</a>
        									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
        										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
        											<img src="/static/imghw/eyess.png" alt="" />
        											<span>1502</span>
        										</div>
        										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
        											<img src="/static/imghw/tiezi.png" alt="" />
        											<span>276</span>
        										</div>
        									</div>
        								</div>
        														</div>
        							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
        								<a href="http://www.miracleart.cn/ja/faq/zt">もっと見る</a>
        							</div>
        						</div>
        					</div>
        				</div>
        			</div>
        							<div   id="377j5v51b"   class="Article_Details_main2">
        					<div   id="377j5v51b"   class="phpgenera_Details_mainL4">
        						<div   id="377j5v51b"   class="phpmain1_2_top">
        							<a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img
        									src="/static/imghw/index2_title2.png" alt="" /></a>
        						</div>
        						<div   id="377j5v51b"   class="phpgenera_Details_mainL4_info">
        
        													<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846916.html" title="PHPはAIインテリジェント音聲アシスタントPHP音聲相互作用システムの構(gòu)築を呼び出す" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175318512535508.jpeg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHPはAIインテリジェント音聲アシスタントPHP音聲相互作用システムの構(gòu)築を呼び出す" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846916.html" title="PHPはAIインテリジェント音聲アシスタントPHP音聲相互作用システムの構(gòu)築を呼び出す" class="phphistorical_Version2_mids_title">PHPはAIインテリジェント音聲アシスタントPHP音聲相互作用システムの構(gòu)築を呼び出す</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 08:45 PM</span>
        								<p class="Articlelist_txts_p">ユーザー音聲入力がキャプチャされ、フロントエンドJavaScriptのMediareCorder APIを介してPHPバックエンドに送信されます。 2。PHPはオーディオを一時(shí)ファイルとして保存し、STTAPI(GoogleやBaiduの音聲認(rèn)識(shí)など)を呼び出してテキストに変換します。 3。PHPは、テキストをAIサービス(Openaigptなど)に送信して、インテリジェントな返信を取得します。 4。PHPは、TTSAPI(BaiduやGoogle Voice Synthesisなど)を呼び出して音聲ファイルに返信します。 5。PHPは、音聲ファイルをフロントエンドに戻し、相互作用を完了します。プロセス全體は、すべてのリンク間のシームレスな接続を確保するためにPHPによって支配されています。</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846918.html" title="PHPを使用してソーシャル共有機(jī)能を構(gòu)築する方法PHP共有インターフェイス統(tǒng)合プラクティス" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175318476518239.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHPを使用してソーシャル共有機(jī)能を構(gòu)築する方法PHP共有インターフェイス統(tǒng)合プラクティス" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846918.html" title="PHPを使用してソーシャル共有機(jī)能を構(gòu)築する方法PHP共有インターフェイス統(tǒng)合プラクティス" class="phphistorical_Version2_mids_title">PHPを使用してソーシャル共有機(jī)能を構(gòu)築する方法PHP共有インターフェイス統(tǒng)合プラクティス</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 08:51 PM</span>
        								<p class="Articlelist_txts_p">PHPでソーシャル共有機(jī)能を構(gòu)築するコア方法は、各プラットフォームの要件を満たす共有リンクを動(dòng)的に生成することです。 1.最初に現(xiàn)在のページまたは指定されたURLおよび記事情報(bào)を取得します。 2。urlencodeを使用してパラメーターをエンコードします。 3.各プラットフォームのプロトコルに従って、共有リンクをスプライスおよび生成します。 4.ユーザーがクリックして共有できるように、フロントエンドにリンクを表示します。 5.ページ上のOGタグを動(dòng)的に生成して、コンテンツディスプレイの共有を最適化します。 6. XSS攻撃を防ぐために、必ずユーザーの入力を逃がしてください。この方法は、複雑な認(rèn)証を必要とせず、メンテナンスコストが低く、ほとんどのコンテンツ共有ニーズに適しています。</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846920.html" title="AIと組み合わせてPHPを使用してテキストエラー修正PHP構(gòu)文検出と最適化を?qū)g現(xiàn)する方法" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175318452251625.jpeg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="AIと組み合わせてPHPを使用してテキストエラー修正PHP構(gòu)文検出と最適化を?qū)g現(xiàn)する方法" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846920.html" title="AIと組み合わせてPHPを使用してテキストエラー修正PHP構(gòu)文検出と最適化を?qū)g現(xiàn)する方法" class="phphistorical_Version2_mids_title">AIと組み合わせてPHPを使用してテキストエラー修正PHP構(gòu)文検出と最適化を?qū)g現(xiàn)する方法</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 08:57 PM</span>
        								<p class="Articlelist_txts_p">AIによるテキストエラーの修正と構(gòu)文最適化を?qū)g現(xiàn)するには、次の手順に従う必要があります。1。Baidu、Tencent API、またはオープンソースNLPライブラリなどの適切なAIモデルまたはAPIを選択します。 2。PHPのカールまたはガズルを介してAPIを呼び出し、返品結(jié)果を処理します。 3.アプリケーションにエラー修正情報(bào)を表示し、ユーザーが採用するかどうかを選択できるようにします。 4.構(gòu)文の検出とコードの最適化には、PHP-LとPHP_CODESNIFFERを使用します。 5.フィードバックを継続的に収集し、モデルまたはルールを更新して効果を改善します。 AIAPIを選択するときは、PHPの精度、応答速度、価格、サポートの評(píng)価に焦點(diǎn)を當(dāng)てます。コードの最適化は、PSR仕様に従い、キャッシュを合理的に使用し、円形クエリを避け、定期的にコードを確認(rèn)し、Xを使用する必要があります。</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846910.html" title="PHPは、PHPコメントレビューとアンチブラシ戦略を収益化するためのブログコメントシステムを作成します" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175324698785730.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHPは、PHPコメントレビューとアンチブラシ戦略を収益化するためのブログコメントシステムを作成します" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846910.html" title="PHPは、PHPコメントレビューとアンチブラシ戦略を収益化するためのブログコメントシステムを作成します" class="phphistorical_Version2_mids_title">PHPは、PHPコメントレビューとアンチブラシ戦略を収益化するためのブログコメントシステムを作成します</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 08:27 PM</span>
        								<p class="Articlelist_txts_p">1.コメントシステムの商業(yè)的価値を最大化するには、ネイティブ広告の正確な配信、ユーザー有料の付加価値サービス(寫真のアップロード、トップアップコメントなど)、コメントの品質(zhì)に基づくインセンティブメカニズム、コンプライアンス匿名データ洞察の収益化に影響を與える必要があります。 2。監(jiān)査戦略では、コンテンツの品質(zhì)評(píng)価によって補(bǔ)足されたコンテンツの階層的露出を?qū)g現(xiàn)するために、コメントの品質(zhì)評(píng)価によって補(bǔ)足された、監(jiān)査前の動(dòng)的キーワードフィルタリングとユーザー報(bào)告メカニズムの組み合わせを採用する必要があります。 3.アンチブラシには、多層防御の構(gòu)築が必要です。RecaptChav3センサーのレス検証、ハニーポットハニーポットフィールド認(rèn)識(shí)ロボット、IPおよびタイムスタンプの頻度制限により、水の散水が防止され、コンテンツパターン認(rèn)識(shí)が疑わしいコメントを示し、攻撃を継続的に繰り返します。</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846888.html" title="PHPを使用してAIを組み合わせて畫像を生成する方法。 PHPは自動(dòng)的にアートワークを生成します" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175326835276962.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHPを使用してAIを組み合わせて畫像を生成する方法。 PHPは自動(dòng)的にアートワークを生成します" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846888.html" title="PHPを使用してAIを組み合わせて畫像を生成する方法。 PHPは自動(dòng)的にアートワークを生成します" class="phphistorical_Version2_mids_title">PHPを使用してAIを組み合わせて畫像を生成する方法。 PHPは自動(dòng)的にアートワークを生成します</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 07:21 PM</span>
        								<p class="Articlelist_txts_p">PHPは、AI畫像処理を直接実行するのではなく、APIを介して統(tǒng)合します。これは、コンピューティング集約型タスクではなくWeb開発に優(yōu)れているためです。 API統(tǒng)合は、専門的な分業(yè)を達(dá)成し、コストを削減し、効率を向上させることができます。 2。主要なテクノロジーの統(tǒng)合には、GuzzleまたはCurlを使用してHTTPリクエスト、JSONデータエンコードとデコード、APIキーセキュリティ認(rèn)証、非同期キュー処理時(shí)間を処理するタスク、堅(jiān)牢なエラー処理と再試行メカニズム、畫像ストレージとディスプレイが含まれます。 3.一般的な課題には、APIコストが制御不能、制御不能な生成結(jié)果、ユーザーエクスペリエンスの低さ、セキュリティリスク、困難なデータ管理が含まれます。対応戦略は、ユーザーの割り當(dāng)てとキャッシュを設(shè)定し、プロップガイダンスとマルチピクチャの選択、非同期通知と進(jìn)捗プロンプト、主要な環(huán)境変數(shù)ストレージとコンテンツ監(jiān)査、クラウドストレージを提供します。</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846911.html" title="PHPは、商品在庫管理と収益化PHP在庫の同期とアラームメカニズムを?qū)g現(xiàn)します" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175324572958058.png?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHPは、商品在庫管理と収益化PHP在庫の同期とアラームメカニズムを?qū)g現(xiàn)します" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846911.html" title="PHPは、商品在庫管理と収益化PHP在庫の同期とアラームメカニズムを?qū)g現(xiàn)します" class="phphistorical_Version2_mids_title">PHPは、商品在庫管理と収益化PHP在庫の同期とアラームメカニズムを?qū)g現(xiàn)します</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 08:30 PM</span>
        								<p class="Articlelist_txts_p">PHPは、データベーストランザクションと任意の行ロックを通じて在庫控除原子性を保証し、高い同時(shí)過剰販売を防ぎます。 2。マルチプラットフォームの在庫の一貫性は、集中管理とイベント駆動(dòng)型の同期に依存し、API/Webhook通知とメッセージキューを組み合わせて、信頼できるデータ送信を確保します。 3.アラームメカニズムは、さまざまなシナリオで低在庫、ゼロ/ネガティブインベントリ、販売、補(bǔ)充サイクル、異常な変動(dòng)戦略を設(shè)定し、緊急性に応じてDingTalk、SMS、または電子メールの責(zé)任者を選択する必要があり、アラーム情報(bào)は完全かつ明確にしてビジネス適応と迅速な対応を?qū)g現(xiàn)する必要があります。</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796848711.html" title="ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/253/068/175356191176507.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796848711.html" title="ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割" class="phphistorical_Version2_mids_title">ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 27, 2025 am	 04:31 AM</span>
        								<p class="Articlelist_txts_p">phpisStillRelevantinModernenterpriseenvironments.1.modernphp(7.xand8.x)は、パフォーマンスゲイン、stricttyping、jit compilation、andmodernsyntaxを提供し、scaleApplications.2.phpintegrateSeffeCtiveTiveliveTiveliveTiveliveTiveTiveTiveliveTiveStures、</p>
        							</div>
        														<div   id="377j5v51b"   class="phphistorical_Version2_mids">
        								<a href="http://www.miracleart.cn/ja/faq/1796846883.html" title="PHP統(tǒng)合AI音聲認(rèn)識(shí)と翻訳者PHP會(huì)議記録自動(dòng)生成ソリューション" class="phphistorical_Version2_mids_img">
        									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
        										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/503/042/175326984626664.jpeg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHP統(tǒng)合AI音聲認(rèn)識(shí)と翻訳者PHP會(huì)議記録自動(dòng)生成ソリューション" />
        								</a>
        								<a href="http://www.miracleart.cn/ja/faq/1796846883.html" title="PHP統(tǒng)合AI音聲認(rèn)識(shí)と翻訳者PHP會(huì)議記録自動(dòng)生成ソリューション" class="phphistorical_Version2_mids_title">PHP統(tǒng)合AI音聲認(rèn)識(shí)と翻訳者PHP會(huì)議記録自動(dòng)生成ソリューション</a>
        								<span id="377j5v51b"    class="Articlelist_txts_time">Jul 25, 2025 pm	 07:06 PM</span>
        								<p class="Articlelist_txts_p">適切なAI音聲認(rèn)識(shí)サービスを選択し、PHPSDKを統(tǒng)合します。 2。PHPを使用してFFMPEGを呼び出して、録音をAPIrequiredフォーマット(WAVなど)に変換します。 3.ファイルをクラウドストレージにアップロードし、APIの非同期認(rèn)識(shí)を呼び出します。 4. JSONの結(jié)果を分析し、NLPテクノロジーを使用してテキストを整理します。 5.単語またはマークダウンドキュメントを生成して、會(huì)議記録の自動(dòng)化を完了します。プロセス全體では、データの暗號(hào)化、アクセス制御、コンプライアンスを確保して、プライバシーとセキュリティを確保する必要があります。</p>
        							</div>
        													</div>
        
        													<a href="http://www.miracleart.cn/ja/be/" class="phpgenera_Details_mainL4_botton">
        								<span>See all articles</span>
        								<img src="/static/imghw/down_right.png" alt="" />
        							</a>
        											</div>
        				</div>
        					</div>
        	</main>
        	<footer>
            <div   id="377j5v51b"   class="footer">
                <div   id="377j5v51b"   class="footertop">
                    <img src="/static/imghw/logo.png" alt="">
                    <p>福祉オンライン PHP トレーニング,PHP 學(xué)習(xí)者の迅速な成長を支援します!</p>
                </div>
                <div   id="377j5v51b"   class="footermid">
                    <a href="http://www.miracleart.cn/ja/about/us.html">私たちについて</a>
                    <a href="http://www.miracleart.cn/ja/about/disclaimer.html">免責(zé)事項(xiàng)</a>
                    <a href="http://www.miracleart.cn/ja/update/article_0_1.html">Sitemap</a>
                </div>
                <div   id="377j5v51b"   class="footerbottom">
                    <p>
                        ? php.cn All rights reserved
                    </p>
                </div>
            </div>
        </footer>
        
        <input type="hidden" id="verifycode" value="/captcha.html">
        
        
        
        
        		<link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
        	
        	
        	
        	
        	
        
        	
        	
        
        
        
        
        
        
        <footer>
        <div class="friendship-link">
        <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p>
        <a href="http://www.miracleart.cn/" title="国产av日韩一区二区三区精品">国产av日韩一区二区三区精品</a>
        
        <div class="friend-links">
        
        
        </div>
        </div>
        
        </footer>
        
        
        <script>
        (function(){
            var bp = document.createElement('script');
            var curProtocol = window.location.protocol.split(':')[0];
            if (curProtocol === 'https') {
                bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
            }
            else {
                bp.src = 'http://push.zhanzhang.baidu.com/push.js';
            }
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(bp, s);
        })();
        </script>
        </body><div id="hogx3" class="pl_css_ganrao" style="display: none;"><rt id="hogx3"></rt><big id="hogx3"></big><acronym id="hogx3"></acronym><ruby id="hogx3"><dl id="hogx3"><button id="hogx3"><tbody id="hogx3"></tbody></button></dl></ruby><bdo id="hogx3"></bdo><ul id="hogx3"><legend id="hogx3"><menuitem id="hogx3"></menuitem></legend></ul><ol id="hogx3"></ol><sup id="hogx3"></sup><abbr id="hogx3"></abbr><nobr id="hogx3"></nobr><b id="hogx3"></b><ul id="hogx3"></ul><input id="hogx3"><del id="hogx3"><i id="hogx3"></i></del></input><div id="hogx3"></div><sup id="hogx3"><table id="hogx3"><address id="hogx3"></address></table></sup><nobr id="hogx3"></nobr><div id="hogx3"></div><tbody id="hogx3"><listing id="hogx3"><dfn id="hogx3"><optgroup id="hogx3"></optgroup></dfn></listing></tbody><ul id="hogx3"></ul><big id="hogx3"></big><abbr id="hogx3"><source id="hogx3"><abbr id="hogx3"></abbr></source></abbr><code id="hogx3"><acronym id="hogx3"><nav id="hogx3"></nav></acronym></code><tr id="hogx3"></tr><s id="hogx3"><b id="hogx3"></b></s><kbd id="hogx3"></kbd><tr id="hogx3"><table id="hogx3"></table></tr><noframes id="hogx3"><rt id="hogx3"><optgroup id="hogx3"></optgroup></rt></noframes><table id="hogx3"><wbr id="hogx3"><u id="hogx3"></u></wbr></table><strike id="hogx3"></strike><wbr id="hogx3"><ul id="hogx3"><dl id="hogx3"></dl></ul></wbr><strong id="hogx3"></strong><fieldset id="hogx3"><center id="hogx3"><object id="hogx3"></object></center></fieldset><td id="hogx3"><form id="hogx3"></form></td><xmp id="hogx3"></xmp><ruby id="hogx3"></ruby><ruby id="hogx3"></ruby><b id="hogx3"><source id="hogx3"></source></b><strike id="hogx3"><button id="hogx3"><tbody id="hogx3"></tbody></button></strike><input id="hogx3"></input><dd id="hogx3"></dd><ruby id="hogx3"><strong id="hogx3"><acronym id="hogx3"></acronym></strong></ruby><form id="hogx3"></form><blockquote id="hogx3"></blockquote><pre id="hogx3"><noframes id="hogx3"><span id="hogx3"></span></noframes></pre><ol id="hogx3"></ol><pre id="hogx3"><menu id="hogx3"><font id="hogx3"></font></menu></pre><dfn id="hogx3"></dfn><wbr id="hogx3"><u id="hogx3"></u></wbr><s id="hogx3"></s><delect id="hogx3"><style id="hogx3"></style></delect></div>
        
        </html>