ウェブサイトに問題があります。今日は csdn の兄弟たちに解決を依頼するためにここに来ました。
ヘルスケア製品ステーション http://www.bjp51.net を作成しました。過去 2 日間でいくつかの問題が発生しました。クリーンアップするために 360 を使用しました。リスクは 49 点です。レポートは次のとおりです。
は非常に深刻な問題なので、今日は最初の問題を解決したいと思います。
360 からの意見を見てください
変更方法がわかりません。皆さんが解決してくれると幸いです。
-----解決策---------
$ id ='';
if(!empty($_POST['id'])){
for($i=0; $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 を次のように変更するのが最善です別名