我想/我正忙着完全重写我的整个网站。在这一点上,我正在研究我所谓的“成员和安全引擎”。我一直在阅读很多关于安全性和SQL注入的内容,而且它非常复杂。 PS。我的网站不仅仅是一个拥有约250多名会员的专业赚钱网站。
对于用户名和密码,我只允许字符a-z,A-Z和0-9。我在if(isset(post))
- 函数中检查了这个:
if(ctype_alnum(mysql_real_escape_string(stripslashes($string))) == false) {
header to error-page; exit;}
else {continu with script}
对密码和用户名都进行了此检查。
如果有人尝试使用未知用户名或密码错误的已知用户名登录,则会在特殊表格中记录(插入)操作,包括IP地址。在尝试使用未知用户名登录10次或使用错误密码进行6次尝试后,IP地址将被阻止从成员区域和所有非成员页面表单上提交,并且表单的提交未显示且由于以下情况而无法使用这个ip-block。提交表单时,我甚至将此ip检查作为一行...如果ip在表中,则为标题(到错误页面);出口;
我的问题:
$xip = $_SERVER['REMOTE_ADDR'];
这是$xip
尝试使用未知用户登录时插入表中
密码错误。$_cookie
或$_session
检索此信息时,是否还必须运行“ctype_alnum”检查?PS。我是荷兰人,所以我的几乎所有的表名,列名,形式输入字段名等等都有一个荷兰语。我仍然在努力,但是当网站完成后,您将无法在我的网站上找到“密码”,“传递”,“用户”,“用户ID”或类似内容。
答案 0 :(得分:1)
使用带有MySQLi或PDO的预准备语句是防止SQL注入的第一步,而且无论如何都不推荐使用mysql_ *命令。
但是,回答关于防止SQL注入的最佳实践的问题的最佳位置是OWASP:它们为一般方法和代码审查以及特定于语言的指南和库提供了许多很好的资源。
https://www.owasp.org/index.php/Guide_to_SQL_Injection https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection
答案 1 :(得分:0)