我使用python sqlite3包来执行查询。 为了避免sql注入问题,我使用占位符作为输入参数。在我的例子中,按列的顺序也来自输入参数。
所以我编写了如下代码:
class ViewPost extends Component {
state = {
post: {}
}
constructor(props) {
super(props);
this.setPostState = this.setPostState.bind(this);
}
componentWillMount() {
this.setPostState();
}
setPostState() {
let postTitle = this.props.match.params.id;
fetch('/posts/getpost', {
method: 'post',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: postTitle
})
})
.then(res => res.json())
.then(post => this.setState({ post }))
}
render() {
return (
<div className="Post">
<div className="card">
<img className="img-fluid" src="/img/darkstockphoto.jpg" alt="Post"/>
<div className="card-body">
<h4 className="card-title">{this.state.post.title}</h4>
<p className="card-text">{this.state.post.author}</p>
<p className="card-text">{this.state.post.date}</p>
<p className="card-text">{this.state.post.body}</p>
</div>
</div>
<hr />
{this.state.post.comments && this.state.post.comments.map(comment => (
<div key={comment.author + comment.date} className="card card-body">
<h4 className="card-title">{comment.title}</h4>
</div>
))}
</div>
);
}
}
export default ViewPost;
占位符替换不适用于sql关键字Order by。 有什么办法可以让我无需担心sql注入就可以完成这项工作吗?
谢谢, 拉夫