Mysql 确保webapp用户只能向其拥有的数据库添加记录

Mysql 确保webapp用户只能向其拥有的数据库添加记录,mysql,database,security,web-applications,relational-database,Mysql,Database,Security,Web Applications,Relational Database,我正在开发一个非常简单的web应用程序,将教师、学生和家庭作业记录在MySQL数据库中各自的表中。学生被分配给老师,一个表格记录了哪些学生完成了哪些家庭作业任务 老师可以选择某个家庭作业任务,然后选择一个学生完成它。提交此文件将记录学生完成作业的情况 各表如下: 老师 -------------------------- |teacher_id | name | -------------------------- | | | 学生 ---

我正在开发一个非常简单的web应用程序,将教师、学生和家庭作业记录在MySQL数据库中各自的表中。学生被分配给老师,一个表格记录了哪些学生完成了哪些家庭作业任务

老师可以选择某个家庭作业任务,然后选择一个学生完成它。提交此文件将记录学生完成作业的情况

各表如下:

老师

--------------------------
|teacher_id | name       |
--------------------------
|           |            |
学生

--------------------------
|student_id | teacher_fk |
--------------------------
|           |            |
家庭作业

--------------------------
|homework_id | details   |
--------------------------
|            |           | 
完成作业

-------------------------------------------
|completion_id | student_fk | homework_fk |
-------------------------------------------
|              |            |             |
当教师选择一个家庭作业任务和一个学生并将其提交为已完成时,将使用MySQL插入,如下所示

INSERT INTO homework_completion VALUES 'student_id', 'homework_id'
这两个值都是从用户提交的表单中检索的。如果用户使用浏览器开发工具,他们可以更改表单中的学生id,然后为他们不“拥有”的学生保存完成的家庭作业


如何最好地避免这种情况?有没有比先选择后检查学生是否属于教师更好的选项?

在会话中,您将存储教师的id(登录用户)

执行插入时,可以使用
插入到。。。选择
强制执行规则:

INSERT INTO homework_completion (student_fk, homework_fk)
  SELECT s.student_id, :homework_id
  FROM student s
  WHERE s.student_id = :student_id
  AND s.teacher_fk = :teacher_id
如果学生的教师id不匹配,将插入零记录


如果某个学生和老师的
student
中可能存在重复记录,请在select子句中添加
LIMIT 1

您已经自己给出了答案。你必须检查学生是否属于通过选择提交请求的te老师。这正是我的想法,但不知道语法-谢谢