Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 停止网站上的HTML/Javascript和SQL注入_Php_Mysql_Html - Fatal编程技术网

Php 停止网站上的HTML/Javascript和SQL注入

Php 停止网站上的HTML/Javascript和SQL注入,php,mysql,html,Php,Mysql,Html,我有一个在线游戏,你有一个状态框。你可以根据自己的感受来更新它。我遇到的问题是,用户将java脚本标记放入消息和状态中。因此,当另一个用户来到他们的页面时,会弹出一个弹出框,说“哈哈”或他们想要的任何东西 然后,我使用 $status = mysql_real_escape_string($_POST['status']); $foo = preg_replace('/[^a-z]/i', null, $status ); 这已经停止了任何JavaScript的运行,但现在当有人向某人发送消息

我有一个在线游戏,你有一个状态框。你可以根据自己的感受来更新它。我遇到的问题是,用户将java脚本标记放入消息和状态中。因此,当另一个用户来到他们的页面时,会弹出一个弹出框,说“哈哈”或他们想要的任何东西

然后,我使用

$status = mysql_real_escape_string($_POST['status']);
$foo = preg_replace('/[^a-z]/i', null, $status );
这已经停止了任何JavaScript的运行,但现在当有人向某人发送消息时,它会去掉空格,因此消息“你好”将显示“你好”。当然这是安全的,但用户不能阅读消息。有没有其他方法可以阻止脚本标记插入到virable中,但仍然允许使用空格


我也很害怕有人用XSS攻击我。因为之前,我被告知一个用户可以在消息中输入一些内容,然后当另一个用户打开它时,它会将密码发送给他们….

首先,在所有外部输入上使用
mysql\u real\u escape\u string()
可以防止所有SQL注入-根本不需要预替换!但这只是为了防止SQL注入

$foo = htmlspecialchars($status);
为了防止网站上出现脚本/HTML注入,您应该始终使用
htmlspecialchars()
来转义用户输入的所有文本,然后再将其呈现给网站的访问者。(例如,紧接着从数据库中选择
之后)

请严肃对待这件事:如果你有时间,去谷歌搜索SQL注入!这并不复杂,你会很容易理解的。如果您创建网站(无论为谁创建),并将用户输入存储在数据库中,您将看到有人试图执行SQL注入。这很容易做到,而且web上有自动化软件,可以轻松地在数百或数千个网站上自动尝试各种SQL注入!对于客户机来说,如果开发人员根本不阻止SQL注入,那么这肯定是不可接受的,所以请慢慢来解决这个问题


脚本注入也是如此!与SQL注入一样,防止这种情况非常容易。您所要做的就是将来自用户输入的所有文本转换为HTML,这样当一些邪恶的家伙进入
,您的访问者就会看到这一点,因为例如
,我建议使用PDO准备好的查询,这些查询是自动转义的,而不是mysql_*函数。您可以尝试以下regex:regex:“我认为这与此类似,请参考此更改后的问题标题,以避免混淆SQL注入和XSS/代码注入。它不是sql注入,而是XSS+注1。只在输出到站点时才这样做,而不是插入到数据库时。确切地说,您需要为输出到的媒体准备数据。您应该添加一些解释,以便OP可以从您的答案中学习。我使用$status=mysql\u real\u escape\u字符串($\u POST['status']);但是脚本标签会通过。。。。。。。