为PHP后输入安全性

时间:2015-08-27 01:44:49

标签: php security xss code-injection

我怀疑与PHP中的POST数据相关的SECURITY。

背景信息:

我有几个输入(文本,电子邮件,广播)和一些textarea。 EG

if($_POST)
{
$entries = htmlspecialchars("$_POST['entries']", ENT_QUOTES);
$username = htmlspecialchars("$_POST['username']", ENT_QUOTES);
$message = htmlspecialchars("$_POST['message']", ENT_QUOTES);

echo $username;
echo...
echo...
}

我正在做的是将所有值发送到* .php页面然后,我打印所有这些值 EG

@Override
public void onCreate() {
    super.onCreate();
    mClientServiceLoopThread = new Thread(mClientServiceLoop = new ClientServiceLoop(),
            "ClientServiceLoop");
    mClientServiceLoopThread.start();
    try {
        mClientServiceLoopThread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

我对安全性知之甚少。只用htmlspecialchars就可以了吗? 或者我是否要使用其他功能?

数据必须在* .php页面上打印回显(无MYSQL)

是的,我的疑问是关于用户可以放在每个INPUT上的错误,因为我不想将其内容仅限于文本或数字或类似内容。

感谢。

1 个答案:

答案 0 :(得分:3)

你需要遍历数组。

$entries = array_map('htmlentities', $_POST['entries']);
$username = htmlentities($_POST['username']);
$message = array_map('htmlentities', $_POST['message']);

或包含您可以使用的ENT_QUOTES

$entries = array_map(function($x) {
    return htmlentities($x, ENT_QUOTES);
}, $_POST['entries']);

,同样适用于$message