Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我是否需要进一步保护我的删除表单_Php_Security - Fatal编程技术网

Php 我是否需要进一步保护我的删除表单

Php 我是否需要进一步保护我的删除表单,php,security,Php,Security,我有一个网站,需要管理员访问才能执行一些功能,其中之一就是删除表中的行。 因此,我使用会话登录作为标准来保护页面,并且可以在站点的根文件夹中看到.htaccess文件 为了执行删除,管理员用户将单击一个删除按钮,当页面上看不到删除查询时,可以在隐藏值中看到表名,因为根据单击的删除按钮,将使用标准mysqli_查询清除不同的表 <form method='POST' action='deleteData.php' target="_blank"> <input type='hid

我有一个网站,需要管理员访问才能执行一些功能,其中之一就是删除表中的行。 因此,我使用会话登录作为标准来保护页面,并且可以在站点的根文件夹中看到.htaccess文件

为了执行删除,管理员用户将单击一个删除按钮,当页面上看不到删除查询时,可以在隐藏值中看到表名,因为根据单击的删除按钮,将使用标准mysqli_查询清除不同的表

<form method='POST' action='deleteData.php' target="_blank">
<input type='hidden' value="table_name_one" name='tbl'>                             
<input type='submit' value='Delete'>
</form>

<form method='POST' action='deleteData.php' target="_blank">
<input type='hidden' value="table_name_two" name='tbl'>                             
<input type='submit' value='Delete'>
</form>

deleteData.php仅在用户输入进一步的确认键后删除

<?php
if (($_SERVER['REQUEST_METHOD'] === 'POST') && (isset($_POST['delete']))){
    if ($_POST['delete_conf'] === 'DELETE') {
         //connect
         //mysqli_query DELETE FROM table_name

         ...
?>
     <body>
        <p>Confirm key:
        <input type="text" name="delete_conf" id="delete" value="" /> 
        <input type='hidden' value="<?php if (!empty($tbl_name)) { echo $tbl_name; } ?>" name='tbl'>
        </p>
<input type='submit' name="delete" value='DELETE!'>

确认键:
(1) 确保将准备好的语句与或一起使用。
(2) 根据有效值列表检查
tbl
值,这样用户就不能将其更改为他们想要的任何表

if(in_array($_POST['tbl'], array('table_name_one', 'table_name_two')))
{
   ....
}
else
{
  echo 'stop trying to hack';
}

从您提供的少量代码来看,我只能假设,只要更改隐藏输入中的表名,就可以很容易地对其进行黑客攻击。yeh没有必要提供完整的代码-更多的是关于过程ok,htaccess+login ok吗?对于一般问题“htaccess+login ok吗?”,这将取决于您的登录系统是否存在某种漏洞。我在代码中没有看到任何验证登录或甚至检查登录用户是否有效的内容。因此,不可能可靠地回答这个问题。发布的代码是不安全的,因为发布的内容不包含该问题的任何内容。