Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止应用程序引擎JDO中的SQL注入_Java_Google App Engine_Jdo - Fatal编程技术网

Java 如何防止应用程序引擎JDO中的SQL注入

Java 如何防止应用程序引擎JDO中的SQL注入,java,google-app-engine,jdo,Java,Google App Engine,Jdo,请帮忙 如何在插入JDO时防止SQL注入 我的JDO类是MyData.Java package com.jdo; import java.util.Date; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; import javax.jdo.annotations.IdentityT

请帮忙

如何在插入JDO时防止SQL注入

我的JDO类是MyData.Java

package com.jdo;

import java.util.Date;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import javax.jdo.annotations.IdentityType;


@PersistenceCapable(identityType = IdentityType.APPLICATION,detachable="true")
public class MyData{
    @PrimaryKey
    @Persistent
    private String id;

    @Persistent
    private String name;

    @Persistent
    private String address;


    @Persistent
    private Date addedDate;

    /**
     * 
     * @param id
     * @param name
     * @param address
     */
    public MyData(String id,String name,String address) {
        super();
        this.id=id;
        this.name=name;
        this.address=address;
        this.addedDate = new Date();
    }


    /**
     * @return id
     */
    public String getId(){
        return this.id;
    }

    /**
     * 
     * @return name;
     */
    public String getname(){
        return this.name;
    }

    /**
     * 
     * @return addedDate
     */
    public Date getAddedDate(){
        return this.addedDate;
    }


    /**
     * 
     * @param id
     */
    public void setId(String id){
        this.id=id;
    }

    /**
     * 
     * @param name
     */
    public void setName(String name){
        this.name=name;
    }

    /**
     * 
     * @param addedDate
     */
    public void setaddedDate(Date addedDate){
        this.addedDate=addedDate;
    }


}
我试着用

MyData user=new MyData ("id001","Shana","Address");                 
user=MyDataDAO.saveData(user);

它已成功保存在表中。但我需要阻止它进行SQL注入…请提供帮助?

当您通过将纯文本字符串与SQL字符串连接起来创建查询时,会发生SQL注入

你不必担心

  • 您正在使用准备好的语句(这些语句正确地引用了所有隐藏的值,包括不可信的值)创建查询,或者
  • 您使用的是一个好的ORM,它通过将对象字段插入到准备好的语句中来创建查询,或者在将消息序列化到数据存储时小心地正确转义数据值

  • 上面的代码看起来属于第2类。

    如果使用得当,您确定框架不会阻止SQL注入吗?您使用的是云SQL还是数据存储?因为后者甚至不使用SQL,所以注入也不是问题。所以没有上面提到的SQL…正如后面提到的O/P,使用GAE/Datastore,所以甚至没有SQL数据存储