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

use*_*083 2 html php mysql

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

然后我通过使用停止了

$status = mysql_real_escape_string($_POST['status']);
$foo = preg_replace('/[^a-z]/i', null, $status );
Run Code Online (Sandbox Code Playgroud)

这已经停止了任何JavaScript的运行,但现在当有人向某人发送消息时,它会占用空格,因此消息"你好吗"它将显示"howareyou".当然这是安全的,但用户无法读取消息.是否还有其他方法可以阻止脚本标签插入到可用但仍允许空格的情况下?

我也真的害怕有人用XSS攻击我.因为以前,我被告知用户可以在消息中输入内容然后当其他用户打开它时,它会向他们发送密码.....

RSe*_*ohn 6

首先使用mysql_real_escape_string()所有外部输入可以防止所有SQL注入 - 根本不需要preg_replace!但这只是为了防止SQL注入.

为了防止在您的网站上进行脚本/ HTML注入,您应该始终使用htmlspecialchars()它来转发来自用户输入的所有文本,然后再将其呈现给您网站的访问者.(例如,在SELECT数据库之后立即)

请认真对待:如果你找到时间,请去google进行SQL注入!它并不复杂,你很容易理解.如果您创建网站 - 无论是谁 - 并将用户输入存储在数据库中,您将观察到有人尝试进行SQL注入.它很容易做到,网络上有自动化软件,可以轻松地在数百或数千个网站上自动尝试各种SQL注入!对于客户来说,如果开发人员根本不阻止SQL注入,那肯定是不可接受的,所以请花点时间来解决这个问题.

这同样适用于脚本注入!与SQL注入一样,防止这种情况非常容易.您所要做的就是将来自用户输入的所有文本转换为HTML,这样当一些邪恶的家伙进入时<script>...</script>,您的访问者将只是看到这一点,因为例如<转换为&lt;并因此阻止脚本被解释浏览器作为JavaScript.