javascript字符串替换PHP上的等价物?

时间:2010-03-01 04:12:47

标签: php javascript

我正在尝试阻止xss注入。 所以在我提交表单之前,会调用一个javascript函数

function validatefield(id) {
    var description = document.getElementById(id).value;   
    description = description.replace(/[\"\'][\s]*javascript:(.*)[\"\']/gi, "");
    description = description.replace(/script(.*)/gi, "");    
    description = description.replace(/eval\((.*)\)/gi, "");
    document.getElementById(id).value=description;
} 

我很奇怪在插入mysql之前是否有办法在php中做同样的事情?如果他们绕过了validatefield函数。

由于

2 个答案:

答案 0 :(得分:4)

您正在寻找preg_replace

$description = preg_replace('regex pattern', 'regex replacement', $description);

答案 1 :(得分:3)

一般来说,您可以在PHP中使用preg_replace进行正则表达式替换。但是你的设计存在一些问题

  1. 你甚至不应该在客户端上这样做。它会在不提供安全性的情况下减慢速度。
  2. 你正在删除那些非常安全的东西(例如“我写了一个脚本来做这样的事情”),同时忽略了许多实际的危险,比如onclick属性(另见XSS Cheat Sheet)。
  3. 一般来说,如果您想允许某种形式的HTML,白名单是一种更好的方法。 HTML Purifier是在PHP中实现此功能的流行工具。