我不是一个专业的网络开发者,但我喜欢网络开发作为一种爱好.. 我是一名学生,我被要求建立一个部门活动网站。我需要为用户注册创建HTML表单。我知道XSS Scripting攻击和SQL注入。但不知道他们究竟是如何工作的。我在服务器端使用PHP和MySQL。
我正在考虑:
所有这些我正在使用RegEx检查 - 使用javascript和PHP
现在我的问题是:
<
和>
替代方案?我不想限制用户输入无害的符号。那么在将值存储到数据库之前是否需要过滤任何特定的字符集,因此我可以正确地为表单字段编写正则表达式检查?
我在谷歌搜索过但无法找到合适的答案。 :(
答案 0 :(得分:1)
要防止SQL注入,您应该使用该语言的转义函数。对于PHP,那是mysql_real_escape_string
。或者,更好的是,使用PDO来限制用户可以放入数据库的内容。
HTML注入/ XSS攻击是不同的;您可以将原始HTML存储在数据库中而不会出现问题,但在显示任何源自用户的HTML之前,请在其上调用htmlspecialcharacters
以防止它被客户端的Web浏览器解释。
不编码您自己的自定义支票。你会错过一些东西。
答案 1 :(得分:0)
至于用户名,这应该做的工作:
if (preg_match('/^[a-z\d_\-<>]{5,20}$/i', $username)) {
echo "Your username is ok.";
// Note that you still have to do something with <>
// Though, personally I'd advise sticking to /^[a-z\d_]{5,20}$/i
} else {
echo "Wrong username format.";
}
对于SQL注入,在您输入数据库的所有内容中使用mysql_real_escape_string或mysql_real_escape_string