【发布时间】:2012-03-21 18:15:15
【问题描述】:
我拥有一个在线游戏,其中有一个状态框。您可以根据自己的感受对其进行更新。我遇到的问题是用户将 java 脚本标签放入消息和状态中。所以当另一个用户来到他们的页面时,会弹出一个弹出框说哈哈或他们想要的任何东西。
然后我通过使用停止了它
$status = mysql_real_escape_string($_POST['status']);
$foo = preg_replace('/[^a-z]/i', null, $status );
现在已经停止运行任何 JavaScript,但是现在当有人向某人发送消息时,它会删除空格,因此对于消息“你好吗”,它将显示“howareyou”。当然这是安全的,但用户无法阅读消息。有没有其他方法可以阻止脚本标签插入病毒但仍然允许空格?
我也很害怕有人用 XSS 攻击我。因为之前,我被告知用户可以在消息中输入一些内容,然后当其他用户打开它时,它会向他们发送密码.....
【问题讨论】:
-
我建议使用 PDO 的准备好的查询,这些查询会自动转义,而不是 mysql_* 函数。
-
你可以试试这个正则表达式:Regex: "?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.* ?'|[^'"">\s]+))?)+\s*|\s*)/?>" 从这里:stackoverflow.com/questions/787932/…
-
更改问题标题以避免混淆 SQL 注入和 XSS/代码注入