Php 网站黑客预防/最小化

Php 网站黑客预防/最小化,php,security,Php,Security,告诉我的服务器端脚本提交的表单或数据来自可信来源或我的网站的最佳方式是什么? 我已经进行了大量的服务器端数据检查,我想我也可以通过客户端来改进这一点 我是一名php/mysql开发人员以了解发布数据的用户的IP使用情况: $ip = $_SERVER['REMOTE_ADDR']; echo "<b>IP Address= $ip</b>"; 它将过滤所有不是a-z、a-z、0-9、-或u的字符,并稍微增强站点的安全性。如果您有权访问Web服务器: 如果您有权访问W

告诉我的服务器端脚本提交的表单或数据来自可信来源或我的网站的最佳方式是什么? 我已经进行了大量的服务器端数据检查,我想我也可以通过客户端来改进这一点


我是一名php/mysql开发人员

以了解发布数据的用户的IP使用情况:

$ip = $_SERVER['REMOTE_ADDR'];
echo "<b>IP Address= $ip</b>"; 
它将过滤所有不是a-z、a-z、0-9、-或u的字符,并稍微增强站点的安全性。如果您有权访问Web服务器:

  • 如果您有权访问Web服务器配置,请禁用服务器横幅(例如显示OS和apache版本)。这些信息对黑客非常有用,您希望禁用任何可以以任何方式帮助他们的东西;)

  • 防止目录列表(例如使用.htaccess文件)。一个简单的例子是:

    选项所有-索引

  • 使用有限的用户帐户运行Web服务器(最好也是chroot用户)


在mysql查询中使用mysql\u real\u escape\u字符串,在html帖子中使用htmlentities

例如:

错:

<?php
if($_SERVER['REQUEST_METHOD'] == "post"){
    echo $_POST['hai'];
}
?>

对:

<?php
if($_SERVER['REQUEST_METHOD'] == "post"){
    echo htmlentities($_POST['hai']);
}
?>
<?php
$query = "SELECT * FROM table WHERE msg = '". mysql_real_escape_string($_GET['hai']) ."'";
?>

$\u POST也可以是$\u GET


错:

<?php
$query = "SELECT * FROM table WHERE msg = '". $_GET['hai'] ."'";
?>

我一直使用一个类来处理此类问题,它将处理服务器/客户端,并确保任何输入都是从服务器本身进行的。然后,它将验证并确保它没有被赋予特殊字符


让我知道这是否有帮助,它在不久前帮助了我。:)

我认为最好的选择是在请求中添加数字签名,即使是一个简单的签名


例如,您的站点或受信任的源添加请求的SHA校验和,在添加秘密“salt”(未发送)后计算该校验和。服务器获取数据,添加相同的salt并计算SHA签名,如果SHA匹配,则源知道秘密,您可以信任内容。

我猜您的问题暗示了CSRF。。。只需生成并添加一个验证令牌


很多框架都可以为您管理这些功能。

伙计们,谢谢你们的帮助,我非常感谢。一般来说,我说的是客户端安全性,即确保来自客户端的数据来自原始源

一般来说,SSL可能就是答案,经过大量浏览,我发现两个网站在一定程度上解决了这个问题:,和

通过这种方式,我的数据的安全性可以达到90%


你怎么看?

可能重复的家伙我的问题是“检查服务器上收到的天气数据是否来自有效来源”而不是“检查数据的正确形式”这似乎没有解决“提交的表格或数据是否来自可信来源或我的网站”的问题。不过,专业提示。
<?php
$query = "SELECT * FROM table WHERE msg = '". mysql_real_escape_string($_GET['hai']) ."'";
?>