ホームページ > バックエンド開発 > PHPチュートリアル > ウェブサイトに問題があります。抜け穴があります。今日は csdn 兄弟に解決を依頼するためにここに来ました。

ウェブサイトに問題があります。抜け穴があります。今日は csdn 兄弟に解決を依頼するためにここに来ました。

WBOY
リリース: 2016-06-13 12:01:40
オリジナル
900 人が閲覧しました

ウェブサイトに問題があります。今日は csdn の兄弟たちに解決を依頼するためにここに来ました。
ヘルスケア製品ステーション http://www.bjp51.net を作成しました。過去 2 日間でいくつかの問題が発生しました。クリーンアップするために 360 を使用しました。リスクは 49 点です。レポートは次のとおりです。



は非常に深刻な問題なので、今日は最初の問題を解決したいと思います。
360 からの意見を見てください


変更方法がわかりません。皆さんが解決してくれると幸いです。



-----解決策---------
$ id ='';
if(!empty($_POST['id'])){
for($i=0; $i $id=$id.($_POST['id'][$i].',');
}
$id= substr ($id,0,strlen($id)-1);//最後の ","
}
$sql="select * from zzcms_main where id in ($id) を削除します)"

彼は、受信したデータを
をチェックせずに SQL コマンドで使用したと考えています------解決策----------- ------- ----
SQL インジェクションの原則は、アドレス バーまたはフォームから注入することです


アドレス バーから $_GET[" を取得した場合 a"]、フィルタリングせずにプログラム内で直接使用すると、脅威が発生します。例:

$_GET["a"]=1; の場合:
$sql = "SELECT * FROM AA WHERE id =$_GET["a"]"; = "SELECT * FROM AA WHERE id =1";
ただし、他の人がアドレス バーを使用してこれを変更し、$_GET["a"] の値を 1 または (および) XXX のさまざまなコードに変更すると、このクエリはステートメントは

$sql = "SELECT * FROM AA WHERE id =1 or (and) xxx";


になるので、騙されてしまいました。

そのため、アドレス バーとフォームから取得したパラメーターを書式設定し、フィルター処理し、種類、長さ、制限する文字を指定する必要があります...
------解決策--------------------
$sql="select * from zzcms_main where id in ($id)" ;
$id は異なりますフィルタリング中です。もちろん、ユーザー入力はすべて挿入されます。

ID は数値のみなので、intval を使用して数値に変換できます。数値でない場合は 0 に変換されるため、注入できません。
------解決策---------
受信データの一重引用符を二重引用符に置き換えます。一重引用符。SQL ステートメントで受信パラメータを使用する場合は一重引用符を追加します。
$id = str_replace("'","''",$_POST['id']);
$sql = " select * from tb_user where id='$id' ";
This方法 注射について心配する必要はありません。
------解決策----------------------

if(!empty($_POST['id'])) {<br />  $id = join(',', array_map('intval', $_POST['id']));<br />}<br />
ログイン後にコピー
$id を次のように変更するのが最善です別名

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート