【发布时间】:2013-08-12 00:11:36
【问题描述】:
为了保护我的项目免受攻击(例如:SQL 注入)我使用以下查询 参数页面(*.php?query=value):
$id=strip_tags($id);
$id=mysql_real_escape_string($id);
if(is_numeric($id) && strlen($id)<=3) //id are numbers maximum of 3 digits
- 除了这个即时通讯使用客户端(JavaScript)和服务器端(php)验证,
strip_tags()根据需要过滤数据。 - 密码使用
bcrypt()加密 - 所有消息都使用
mcrypt_ecb()加密 - 只有
isset($_SESSION["id"])即登录后才能访问页面。 -
error_reporting(0);隐藏错误。 -
$_POST而不是$_REQUEST -
mysql_real_escape_string();每个输入
实际上我的项目将被大学使用,我对安全性感到紧张,因为回溯很容易渗透,所以我努力让它安全。 (我知道这是一个很大的问题,但任何形式的帮助都会非常有用)但是作为一名学生,我想知道我还缺少什么来确保安全?
【问题讨论】:
-
没有冒犯兄弟 - 但你的方法有很多问题......从哪里开始?
-
如果您担心安全性,请忘记 MySQL 并开始使用 MySQLi 或 PDO 准备好的语句/绑定变量 - 大学应该在这方面处于领先地位,而不是落后于其他 10 年世界
-
strip_tags()不是安全的 HTML 移除器,不应过早地转义值。 -
如果您正确转义请求,Mysql 是安全的,但现在的重点是新版本不支持 mysql 扩展 php>=5.5 所以如果您想使用新版本,那么您必须使用其他扩展mysql ...检查这个stackoverflow.com/questions/12859942/…
-
使用 MySQL,您必须跳过更多的障碍才能确保它的安全,而且很容易出错;准备好的语句大大减少了编码工作